在查看R6RS中的syntax-case
部分时,我看到了关键字make-variable-transformer
,描述为标识符宏。给出的例子是非常小的,我不是在为什么它是必要的,或者什么用例需要它。找到其使用的其他例子也证明是困难的。据推测,它可以使某种形式的语法转换成为可能,或者更优雅?
答案 0 :(得分:2)
阅读http://www.r6rs.org/final/html/r6rs-lib/r6rs-lib-Z-H-13.html#node_sec_12.3后,我的观点如下:
如果mac
是语法转换器
(mac foo (bar baz))
会将整个s-expr替换为转换结果,这可能导致任何事件(SOMETHING)
,而(foo mac bar)
只会替换mac
导致(foo SOMETHING bar)
{1}}。
通常情况(set! mac 'foo)
会发出错误信号,表明变压器似乎无法出现在集合表达式的左侧,但如果mac
是变量变换器(set! mac 'foo)
则会调用{{ 1}}与整个s-expr。
我的直觉告诉我,如果你开始用宏实现数据类型,那将会很有用。
答案 1 :(得分:1)
我偶然发现了关于制造变量变压器的文档。这是一个问题,我建议使用变量变压器......
Jack Trades