在使用quote / unquote玩了一段时间后,我想做一个技巧,但它不想做。这就是我做了什么以及出了什么:
user=> (let [x '#(inc 1)] `(1 ~x))
(1 (fn* [] (inc 1)))
但我想要的是:
(1 2)
你能帮帮我吗? :)
并解释你正在使用的Clojure的“部分”......
答案 0 :(得分:3)
您可以使用eval
:
user=> (let [x `(inc 1)] (eval `(list 1 ~x))) (1 2)
或更常规:
user=> (defmacro foo [x] `(list 1 ~x)) #'user/foo user=> (foo (inc 1)) (1 2)
答案 1 :(得分:1)
这会像你想要的那样工作:
user> (let [x (#(inc 1))] `(1 ~x))
;=> (1 2)