【发布时间】:2008-11-28 06:55:03
【问题描述】:
在查看 R6RS 中的syntax-case 部分时,我看到了关键字make-variable-transformer,被描述为一个标识符宏。给出的例子非常少,我不明白为什么它是必要的,或者什么用例需要它。事实证明,寻找其使用的其他示例也很困难。大概它使某种形式的语法转换成为可能,或者更优雅?
【问题讨论】:
在查看 R6RS 中的syntax-case 部分时,我看到了关键字make-variable-transformer,被描述为一个标识符宏。给出的例子非常少,我不明白为什么它是必要的,或者什么用例需要它。事实证明,寻找其使用的其他示例也很困难。大概它使某种形式的语法转换成为可能,或者更优雅?
【问题讨论】:
看完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)。
通常(set! mac 'foo) 会发出错误信号,似乎转换器不能出现在集合表达式的左侧,但如果mac 是变量转换器,(set! mac 'foo) 将改为调用mac 与整个 s-表达式
我的直觉告诉我,如果您开始使用宏实现数据类型,这将很有用。
【讨论】:
我在搜索有关 make-variable-transformer 的文档时遇到了这个问题。这是我遇到的一个问题,建议使用 make-variable-transformer...
杰克交易
【讨论】: