我不熟悉Scheme Macros。如果我只有一个模式,并且我想组合定义语法和语法规则,我该怎么做呢?
(define-syntax for
(syntax-rules (from to)
[(for i from x to y step body) ...]
[(for i from x to y body) ...]))如果我只有一个for,我如何将语法定义和规则结合起来?
谢谢。
发布于 2009-10-01 01:37:05
换句话说,您决定for实际上只需要一种模式,并希望编写如下内容:
(defmacro (for ,i from ,x to ,y step ,body)
; code goes here
)Scheme中没有任何内置的东西可以使单模式宏的编写速度更快。传统的解决方案是(惊喜!)来编写另一个宏。
我使用了defsubst from Swindle和PLT Scheme now ships with define-syntax-rule,它们做了同样的事情。如果您正在学习宏,那么编写您自己的define-syntax-rule等效项将是一个很好的练习,特别是当您想要某种方式来指示诸如"for“和"from”之类的关键字时。defsubst和define-syntax-rule都不能处理这些问题。
https://stackoverflow.com/questions/1501287
复制相似问题