У меня есть макрос clojure:
(defmacro show [x] `(show-fn ~x) )
: который задан:
(show hello)
Я хочу разрешить:
(show-fn 'hello)
: Как я могусделать это?
user=> (defmacro show [x] `(~'show-fn '~x)) #'user/show user=> (macroexpand '(show hello)) (show-fn (quote hello))
Это называется «захват символа». Он удерживает символ от разрешения в текущем пространстве имен, как в вашем примере.