在查看syntax-case
R6RS 中的部分时,我看到了关键字make-variable-transformer
,描述为标识符宏。给出的例子非常少,我不明白为什么它是必要的,或者什么用例需要它。事实证明,寻找其使用的其他示例也很困难。大概它使某种形式的语法转换成为可能,或者更优雅?
Michael Conner
问问题
379 次
2 回答
2
阅读http://www.r6rs.org/final/html/r6rs-lib/r6rs-lib-ZH-13.html#node_sec_12.3后,我的看法如下:
Ifmac
是一个语法转换器
(mac foo (bar baz))
会将整个 s-expr 替换为转换的结果,这可能会导致任何结果(SOMETHING)
,而(foo mac bar)
只会替换mac
导致(foo SOMETHING bar)
.
通常(set! mac 'foo)
会发出错误信号,似乎转换器不能出现在集合表达式的左侧,但如果mac
是变量转换器(set! mac 'foo)
,则会改为mac
使用整个 s-expr 调用。
我的直觉告诉我,如果您开始使用宏实现数据类型,这将很有用。
于 2008-12-03T08:26:30.420 回答
1
我在搜索有关 make-variable-transformer 的文档时遇到了这个问题。这是我提出的一个问题,建议使用 make-variable-transformer ......
杰克交易
于 2009-06-17T18:13:17.220 回答