首页 > 解决方案 > R6RS:应用于空列表的语法表达式形式是否返回包装的语法对象?

问题描述

考虑 R6RS 方案中的以下表达式:

(syntax ())

当我在 Racket 中键入这个表达式时,会返回一个(包装的)语法对象。另一方面,相同的表达式在 Chez Scheme 中产生(展开的)空列表。

我想知道哪个系统符合 R6RS(或者标准是否允许这两种行为)。R6RS 中的相关段落是解析输入并产生输出。在那里,它说:

语法产生的输出根据以下规则进行包装或解包......不包含任何模式变量的任何部分的副本都是一个包装的语法对象。

(syntax ())模板中不包含任何模式变量,所以看起来结果应该是一个包装的语法对象,并且 Racket 是对的。

另一方面,Chez Scheme 的作者 R. Kent Dybvig 是该syntax-case系统的发明者之一,因此人们期望 Chez Scheme 严格遵循该标准。

标签: schemeracketr6rschez-scheme

解决方案


推荐阅读