我已经阅读了JRM 的 Syntax-rules Primer for the Merely Eccentric,它帮助我理解了语法规则以及它与 common-lisp 的定义宏有何不同。语法规则只是在定义语法中实现语法转换器的一种方式。
我正在寻找两件事,第一是更多示例和语法规则的解释,第二是学习使用定义语法的其他方式的良好资源。你推荐什么资源?
我已经阅读了JRM 的 Syntax-rules Primer for the Merely Eccentric,它帮助我理解了语法规则以及它与 common-lisp 的定义宏有何不同。语法规则只是在定义语法中实现语法转换器的一种方式。
我正在寻找两件事,第一是更多示例和语法规则的解释,第二是学习使用定义语法的其他方式的良好资源。你推荐什么资源?
回答你的第二个问题:syntax-case
是另一种形式进入define-syntax
. Kent Dybvig 是 的主要支持者syntax-case
,他有一个使用它的教程 [PDF]。
我还阅读了 PLT Scheme 文档以syntax-case
获取更多示例,并了解实施中的变化。
JRM 语法规则入门非常好,但编程语言的第 36 章:应用程序和解释,由 Shriram Krishnamurti http://www.cs.brown.edu/~sk/Publications/Books/ProgLangs/)也有很好的覆盖编写 Scheme 宏。在过去的 10 年中,该材料已在几篇短文、技术报告等中得到使用和改进,因此这不是一篇“关于 1983 年 Scheme 的 X 实现的事实,不再可访问”的论文。
The Scheme Cookbook中的资源列表是一个很好的起点。如果您喜欢论文,请不要犹豫,访问readscheme.org。
Fear of Macros是在 Racket 中使用宏的实用指南。它显示了许多使用define-syntax
. 该材料可能并不完全适用于 Scheme,但您可能会发现一些示例有助于了解可以做什么。