了解Scheme宏的来源:define-syntax和syntax-rules
-
02-07-2019 - |
题
我已阅读 JRM的语法规则入门对于Merely Eccentric而言,它帮助我理解了语法规则以及它与common-lisp的define-macro的不同之处。 syntax-rules只是在define-syntax中实现语法转换器的一种方法。
我正在寻找两件事,第一件是语法规则的更多示例和解释,第二件是学习使用define-syntax的其他方法的好资源。你推荐什么资源?
解决方案
回答第二个问题: syntax-case
是 define-syntax
中的另一种形式。 Kent Dybvig是 syntax-case
的主要支持者,他有一个使用它的教程[PDF]。
我还在上阅读PLT计划文档语法案例
以获取更多示例,并了解实现中的变化。
其他提示
JRM语法规则入门非常好,但是编程语言的第36章:应用和解释,作者:Shriram Krishnamurti http://www.cs.brown.edu/~sk/Publications/Books/ProgLangs/ )也很好地编写了Scheme宏。在过去的10年里,这些材料已经在几篇短篇文章,技术报告等中得到了使用和改进,所以它并不是“1983年不再可以获得的Scheme的X实现”的真实情况。
计划指南中的资源列表是一个很好的起点。 如果您更喜欢论文,请不要犹豫,访问 readscheme.org 。
对宏的恐惧是在Racket中使用宏的实用指南。它显示了使用 define-syntax
的许多方法。该材料可能不完全适用于Scheme,但您可能会发现一些示例对于了解可以执行的操作非常有用。
不隶属于 StackOverflow