Работя върху макрос, опитвам се да разбера как да избегна разширяването на определени форми, вземете следното и макрос например,
(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*.