在 Chibi 和 CHICKEN 中,以下syntax-rules
表达式计算为一个过程:
(syntax-rules () ((_) #f))
这只是这些特定实现如何编写的产物吗?Scheme 语言规范似乎没有要求syntax-rules
能够评估为一个值。
更新
看来这可能取决于 Scheme 的版本?
语义:语法规则的实例在宏扩展时通过指定一系列卫生重写规则来评估新的宏转换器。一个宏的使用,其关键字与由 syntax-rules 指定的转换器相关联,与 s 中包含的模式相匹配,从最左边的 开始。找到匹配项后,将根据模板卫生地转录宏使用。找不到匹配项时,这是语法冲突。
语义:语法规则的一个实例通过指定一系列卫生重写规则来生成一个新的宏转换器。使用关键字与由 syntax-rules 指定的转换器相关联的宏与语法规则中包含的模式相匹配,从最左边的语法规则开始。找到匹配项后,将根据模板卫生地转录宏使用。