Здесь x
является симметричным, потому что некоторое выражение, переданное and
, может содержать x
и избежать этого конфликта.Тогда почему next
не является Генсимедом?Не может next
привести к захвату переменной?
(defmacro and
([] true)
([x] x)
([x & next]
`(let [and# ~x]
(if and# (and ~@next) and#))))