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