【发布时间】:2011-05-13 01:36:09
【问题描述】:
我正在研究一个宏,我想弄清楚如何避免某些形式的扩展,以下面和宏为例,
(defmacro and
([] true)
([x] x)
([x & next]
`(let [and# ~x]
(if and# (and ~@next) and#))))
展开时,
(mexpand-all '(and 1 2 3))
成为,
(let* [and__973__auto__ 1]
(if and__973__auto__
(let* [and__973__auto__ 2]
(if and__973__auto__ 3 and__973__auto__))
and__973__auto__))
在这种情况下,我需要做的是阻止 let 扩展为 let*。
【问题讨论】: