3

ファイルで、次の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のバグですか、それとも何か問題がありますか?

4

1 に答える 1