当我阅读The Scheme Programming Language 的宏部分时,它提到当您尝试使用 定义语法扩展define-syntax
时,您应该使用pat ...
在模式中指定零个或多个表达式。为什么不只使用...
零个或多个表达式,在这种情况下pat ...
意味着一个或多个表达式?
此外,当作者给出and
如下定义时:
(define-syntax and
(syntax-rules ()
[(_) #t]
[(_ e) e]
[(_ e1 e2 e3 ...)
(if e1 (and e2 e3 ...) #f)]))
为什么不直接写成这样:
(define-syntax and
(syntax-rules ()
[(_) #t]
[(_ e) e]
[(_ e1 e2 ...)
(if e1 (and e2 ...) #f)]))
我已经用一些案例测试了这个定义,我没有发现任何问题。