Je ne comprends pas comment obtenir l'expansion complète de la macro.Pourquoi la macro-expansion ne développe pas les formes imbriquées dans Clojure?
Avec ce code
(when true (when true true))
je voudrais obtenir la pleine expansion macro
(if true (do (if true (do true)))
Mais je ne peux pas
Je comprends macroexpansion-1
va résoudre le premier niveau d'expansion:
(macroexpand-1 '(when true (when true true)))
(if true (do (when true true)))
Mais pourquoi quand je l'appelle à nouveau macroexpand-1
(c'est ce que devrait faire macroexpand
):
(macroexpand-1 '(if true (do (when true true))))
J'ai obtenu exactement le même résultat?
(if true (do (when true true)))
Je m'attendais à une expansion complète de macro.
La macro-extension fonctionne-t-elle uniquement avec les formulaires de niveau supérieur?
Je suis au courant d'une fonction expand-all
dans l'espace de noms clojure.walk
, donc je suppose macroexpand
ne fonctionne pas sur les structures imbriquées. Ai-je raison ?