내가 특정 형태의 확장을 피하기 다음과 같은 예를 들면 매크로를 수행하는 방법을 알아 내려고 노력하고, 매크로 일하고,Clojure의 매크로 확장
확장
(defmacro and
([] true)
([x] x)
([x & next]
`(let [and# ~x]
(if and# (and [email protected]) 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 양식을 제외한 모든 항목을 확장하는 것입니다. BTW, mexpand는 contrib 매크로 - 유틸리티에서 유래합니다. –