2

在查看syntax-caseR6RS 中的部分时,我看到了关键字make-variable-transformer,描述为标识符宏。给出的例子非常少,我不明白为什么它是必要的,或者什么用例需要它。事实证明,寻找其使用的其他示例也很困难。大概它使某种形式的语法转换成为可能,或者更优雅?

4

2 回答 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 ......

http://groups.google.com/group/comp.lang.scheme/browse_frm/thread/96b07d431f1a66de/777f8e07ae1855f3#777f8e07ae1855f3

杰克交易

于 2009-06-17T18:13:17.220 回答