ClojureでShenを実装していることをご存知の方もいます。 シェンは二重の名前空間を持ち、すべてのシンボルが自分自身に評価されるので、シンボルを自身にバインドするClojureマクロと、後置したシンボルに値をバインドする必要があります。Clojure:^:マクロのダイナミック?
*language*
のようなシンボルもバインドする必要があります。私はWarning: *language* not declared dynamic and thus is not dynamically rebindable, but its name suggests otherwise. Please either indicate ^:dynamic *language* or change the name.
(defmacro set [x y]
`(let [y# ~y]
(def ^:dynamic ~x '~x)
(intern *ns* (symbol (str (name ~x) "__varPoF__")))
(def ^:dynamic ~(symbol (str (name x) "__varPoF__")) y#)
y#))
を取得し、パラメータとして*language*
と、次のマクロを使用する場合、これは動作していない理由を誰かが私に言うことはできますか?
感謝を "隠します"! –