在R6RS方案中考虑以下表达式:
(syntax ())
当我在Racket中键入此表达式时,将返回一个(包装的)语法对象。另一方面,相同的表达式在Chez Scheme中产生(未包装的)空列表。
我想知道哪个系统符合R6RS(或者该标准是否允许两种行为)。 R6RS中的相关段落为Parsing input and producing output。在那里,它说:
根据以下规则包装或展开由语法产生的输出 ... 不包含任何模式变量的任何部分的副本都是包装的语法对象。
在(syntax ())
中,模板不包含任何模式变量,因此结果似乎应该是包装的语法对象,并且Racket是正确的。
另一方面,Chez Scheme的作者R. Kent Dybvig是syntax-case
系统的发明者之一,因此人们希望Chez Scheme严格遵循该标准。