私は、ClojureScriptのvar引数の静的コンパイル時のメタデータに基づいたリターンフォームの構築を知らせるClojureScriptマクロ(Clojureを介して実行/コンパイル)を構築したいと考えています。cljマクロからcljs varメタデータをコンパイルするにはどうすればいいですか?
ClojureScriptコードからコンパイル時の静的なvarメタデータにアクセスできることを理解しています((meta (var varsym))
; this postを参照)。しかし、このデータは、マクロからアクセスできるような方法でコンパイルプロセスにアクセスできますか?
ここで私がやりたいもののラフスケッチだ(との質問は、あなたが以下のget-meta-for-varsym
を書くと思いますどのように実際にある):このため
;; executed/compiled in clj, targeting cljs
(defmacro themacro
[varsym & args]
(let [var-meta (get-meta-for-varsym varsym)
return-form (compile-return-form-from-metadata var-meta args)]
return-form))
ClojureScriptはJVMの実装とは異なり、実行時には 'Var'を使用しませんが、むしろ裸のJavascript変数を使用します。 –
@Nathan Davis:はい。という事は承知しています。しかし、ClojureScriptは静的なvarメタデータを可能にするファサードを作成します。何がクールで、多くの目的のために十分です。 – metasoarous