R6RS Scheme的变压变压器有什么好处?

时间:2008-11-28 06:55:03

标签: macros scheme

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

2 个答案:

答案 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)

我偶然发现了关于制造变量变压器的文档。这是一个问题,我建议使用变量变压器......

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

Jack Trades