我想将特殊变量注入宏以进行编译时绑定。
因此,例如,以下形式:
(define-route (my/route)
(some-proc @@request)
(some-other-proc @@request))
应扩展为:
(some-code)
...
(lambda (request)
...
(some-proc request)
(some-other-proc request))
其中 request 绑定到生成代码中的请求,在调用者指定的所有位置。
我不知道如何最好地去做。这是球拍宏提供执行能力的更常见模式,还是我必须手动执行?
如果是这样,我是否应该递归循环遍历主体模式,寻找任何匹配 '@@request 的符号然后替换它们?我注意到 syntax->list 不是以这种方式递归的,即
(syntax->list #'(printf "first: ~a\" (get-var (other-proc)))
是 3 个语法对象而不是 4 个,第三个 syntax-obj 是 2 个以上。所以我假设我需要在这里手动重复,但也许有更好的方法来做到这一点?
谢谢你的帮助。