X.clojurescriptとX.clojure名前空間があるとしましょう。X.clojurescriptのすべてがClojurescriptコードであり、X.clojureのすべてがClojureコードです。残念ながら、Clojurescriptでマクロを直接定義することはできません。マクロをClojureで定義してから、を使用してマクロをClojurescript名前空間に取り込む必要があります。
(ns X.clojurescript.abc
(:require-macros [X.clojure.def :as clj]))
これで結構です。ただし、マクロ(X.clojureで定義されている)がClojurescript名前空間(X.clojurescript)で定義されているものを参照する必要がある場合はどうなりますか?問題は、他の名前空間を解決するときに、Clojureコンパイラが私のClojurescript名前空間(別のディレクトリ)を検索しないことです。
Clojurescriptに存在するのと同じ名前空間と必要な定義を持つ名前空間をClojureコードに作成するだけでこの問題を回避できましたが、これはちょっとばかげているようです。したがって、たとえば、マクロにX.clojurescript.abc.yが必要な場合は、ClojureバージョンのX.clojurescript.abcでダミーのyを定義する追加の名前空間をClojure側に作成します。ちょっとばかげている。
Clojurescript側で何かを参照する必要があるマクロをどのように処理しますか?