正如你們中的一些人知道我正在Clojure中實施Shen。 由於Shen有一個雙重命名空間,並且所有符號都是自己評估的,所以我需要一個Clojure宏,它將符號綁定到自身,並將該值綁定到後綴符號。Clojure:^:在宏中動態?
現在還必須綁定像*language*
這樣的符號。但是,當我使用下面的宏與*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#))
有人能告訴我這是爲什麼不工作?
謝謝! – 2012-03-05 15:01:51