ファイルで、次の2つのマクロを定義します。
(ns macros)
(defmacro foo [a]
`(+ ~a 2))
(defmacro bar [a]
`(* 2 (foo ~a)))
clojureでは、両方のマクロが意図したとおりに機能します。
clojurescriptでは、マクロ「foo」のみが機能し、「bar」は次のエラーを生成します。
"Error evaluating:" (bar 0) :as "(2 * macros.foo.call(null,0));\n"
org.mozilla.javascript.EcmaError: ReferenceError: "macros" is not defined. (<cljs repl>#4)
at <cljs repl>:4 (anonymous)
at <cljs repl>:4
ここでは、「foo」マクロは展開されず、関数呼び出しとして解釈されるようです。
これはclojurescriptのバグですか、それとも何か問題がありますか?