在clojure中扩展宏的问题

时间:2010-12-31 16:52:34

标签: clojure

我有一个clojure宏:

(defmacro show
  [x] `(show-fn ~x)
)

:给出了:

(show hello)

我想解决:

(show-fn 'hello)

:我该怎么做?

1 个答案:

答案 0 :(得分:3)

user=> (defmacro show [x] `(~'show-fn '~x))
#'user/show
user=> (macroexpand '(show hello))
(show-fn (quote hello))

这称为“符号捕获”。它使符号不会在当前命名空间中被解析,就像您的示例一样。