完全なマクロ展開を取得する方法がわかりません。このコードではClojureでマクロ展開がネストされたフォームを展開しないのはなぜですか?
(when true (when true true))
は、私は完全なマクロ展開
(if true (do (if true (do true)))
を取得したいと思います。しかし、私は
が、私は拡張の最初のレベルを解決しますmacroexpansion-1
を理解することはできません。
(macroexpand-1 '(when true (when true true)))
(if true (do (when true true)))
しかし、なぜ私は(それがmacroexpand
を何をすべきかだ)macroexpand-1
再び呼び出すとき:
(macroexpand-1 '(if true (do (when true true))))
私は正確に同じ結果を得ましたか。
(if true (do (when true true)))
私は完全なマクロ展開を期待していました。
マクロ展開は最上位フォームでのみ機能しますか?
私はclojure.walk
名前空間のexpand-all
機能の承知しているので、私はmacroexpand
は、ネストされた構造では動作しませんと仮定し 。私は正しい?