【发布时间】:2020-11-21 16:05:54
【问题描述】:
在 Guile 方案中,我有一个调用另一个宏的宏,我希望调用内部宏来引用内部宏中使用的符号。 这是一个简单的例子来说明我想要实现的目标:
(define-syntax macro1
(lambda (x)
(syntax-case x ()
((macro1 expr1)
(with-syntax ((f (datum->syntax x 'f)))
#'(lambda (f) expr1))))))
(define-syntax macro2 (lambda (x)
(syntax-case x ()
((macro2 expr2)
#'(macro1 (expr2 f))))))
((macro2 1+) 2)
我希望最后一行返回 3,但我得到了以下错误:
;;; <stdin>:142:0: warning: possibly unbound variable `f'
ice-9/boot-9.scm:1669:16: In procedure raise-exception:
Unbound variable: f
有没有可能做我想做的事?
【问题讨论】: