私は clojurescript で他の名前空間からマクロを正常にインポートしています。しかし、マクロを定義して使用できるように、単一ファイルの構築が clojure 1.7 で可能かどうか、または可能である必要があるかどうかは疑問です。私が試したことは機能しませんが、どこかで詳細を見逃している可能性があります。
(ns cljc.core)
#?(:cljs
(enable-console-print!))
#?(:clj
(defmacro list-macro [x y]
`(list ~x ~y)))
(defn foo [a]
(println (list-macro a a)))
(foo :a)
このフォームは、list-macrocljs のコンパイル時に未定義で失敗します。list-macro の :clj ガードを削除すると、defmacro は cljs コンパイル内で未定義になります。方法はありますか?