在 Guile 中,我正在努力学习define-syntax
和syntax-rules
. 我的印象是方案宏不评估他们的论点,但我的似乎正在这样做:
(define-syntax foo
(syntax-rules ()
((foo word)
(if (eqv? word 'bar) (begin (write "Caller said BAR!") (newline)))
)))
如果我用 调用它(foo bar)
,我会收到错误消息
未绑定变量:bar
而如果我用 调用它(foo 'bar)
,我会得到预期的
“来电者说BAR!”
这看起来好像在应用宏之前对参数进行了评估。