我有一个clojure宏:
(defmacro show
[x] `(show-fn ~x)
)
:给出了:
(show hello)
我想解决:
(show-fn 'hello)
:我该怎么做?
答案 0 :(得分:3)
user=> (defmacro show [x] `(~'show-fn '~x))
#'user/show
user=> (macroexpand '(show hello))
(show-fn (quote hello))
这称为“符号捕获”。它使符号不会在当前命名空间中被解析,就像您的示例一样。