【发布时间】:2010-04-28 06:57:54
【问题描述】:
要温柔,因为我的宏富很弱。
我想做的是这样的:
(defmacro foo [x] `(dosync (alter x# conj x)))
(defmacro bar [] `(let [x# (ref [])] (foo 3)))
这可能吗?由于符号捕获,我不能只 (let [x ..] ..)。
注意:我知道这个例子是微不足道的,没有宏观价值,但这是我能想到的最简单的例子。
【问题讨论】:
-
您能否提供一个不那么简单但更现实的例子?我发现很难说出你想要做什么(即使给出了你自己的答案!)。只是要求了解发生了什么,如果您愿意继续前进,请不要担心。 :-)
-
gist.github.com/381870 是我尝试做的一个更好的例子。由于不相关的原因,它仍然无法正常工作。
标签: macros clojure symbol-capture