【问题标题】:How ought I run the annotate function in gui-debugger/annotator on a datum?我应该如何在基准上运行 gui-debugger/annotator 中的注释功能?
【发布时间】:2014-02-04 18:19:26
【问题描述】:

我正在尝试学习如何使用 DrRacket 调试器的 annotate 函数。我的最终目标是构建一个 REPL,您可以在闭包中执行它并可以访问范围内的所有内容。 (请参阅我关于该主题的previous question 和Greg Hendershott 的深入研究的answer)目前,我只是在尝试探索annotate 函数的工作原理。你可以看到我第一次使用它的探索性尝试,以及结果,here

注释器内部发生的错误似乎是在它尝试匹配字符串附加的应用程序时出现的。匹配器正在寻找#%plain-app,而我呈现给它的扩展语法包含#%app。我不确定我是否应该以不同的方式扩展语法,以便它以#%plain-app 的形式出现,或者如果我在生成要输入注释器的语法时做错了其他事情。有人看到我的错误在哪里吗?

【问题讨论】:

  • 也许像local-expand 而不是expand 是答案的一部分?但在这个阶段,您可能应该在 Racket 邮件列表中询问。这样一来,像 Robby Findler(我认为他写了 annotate 以及 DrRacket 的大部分人)这样的人就可以做出回应。

标签: syntax macros racket


【解决方案1】:

This revision 到我之前的 pasterack 帖子被毫无怨言地吞下了。似乎语法匹配必须在顶级语法对象上进行(排除在扩展阶段可能发生的任何事情,例如宏),并且扩展必须在附加当前命名空间的情况下进行。语法匹配有一些更微妙的地方,特别是语法对象需要是 free-identifier=?到#%plain-app。有关所有血腥细节,请参阅mailing list thread I started

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-19
    • 1970-01-01
    • 2021-02-02
    • 1970-01-01
    • 2013-07-30
    相关资源
    最近更新 更多