【问题标题】:What are the benefits of R6RS Scheme's make-variable-transformer?R6RS Scheme 的 make-variable-transformer 有什么好处?
【发布时间】:2008-11-28 06:55:03
【问题描述】:

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

【问题讨论】:

    标签: macros scheme


    【解决方案1】:

    看完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-表达式

    我的直觉告诉我,如果您开始使用宏实现数据类型,这将很有用。

    【讨论】:

      【解决方案2】:

      我在搜索有关 make-variable-transformer 的文档时遇到了这个问题。这是我遇到的一个问题,建议使用 make-variable-transformer...

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

      杰克交易

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-28
        • 1970-01-01
        • 1970-01-01
        • 2011-01-04
        • 1970-01-01
        • 2010-11-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多