1

Clojure および ClojureScript にコンパイルされる cljx のグラフィック プログラムのコード ベースがあります。

ここで、最初のマクロを紹介したいと思います。

(defmacro optional-styled-primitive [args body] 
   (let [extra (conj args 'style)] 
     `(fn (~extra (->SShape ~'style ~body))
          (~args (->SShape {} ~body)) 
      )
   )
)

このマクロの目的は、引数のリストと、それらの引数を使用してジオメトリを生成する式を取得することです。そして、2 つのアリティを持つ関数を返すには: そのうちの 1 つはオプションのスタイル パラメータを取ります。このマクロは、それが定義されているファイル内で使用され、オプションでスタイルを取る他の多くの関数を作成します。例えば ​​:

(def square (optional-styled-primitive [n] [[0 0] [0 n] [n n] [n 0]]))

しかし、このマクロを導入すると、明らかに、コンパイルの ClojureScript 段階が中断されます。

私が理解できないのは、それについて何をすべきかということです。オンライン ディスカッションでは、ClojureScript を使用する必要があると話されています:require-macrosが、実際にこのマクロをエクスポートしたり、必要としたりすることはありません。定義されている場所で使用したいだけです。では、ClojureScript コンパイラーに到達する前に、ファイルの途中で、Clojure を使用してこのマクロを展開するようにコンパイラーに指示するにはどうすればよいでしょうか?

4

1 に答える 1