Проблема расширения макроса в clojure - PullRequest
1 голос
/ 31 декабря 2010

У меня есть макрос clojure:

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

: который задан:

(show hello)

Я хочу разрешить:

(show-fn 'hello)

: Как я могусделать это?

1 Ответ

3 голосов
/ 31 декабря 2010
user=> (defmacro show [x] `(~'show-fn '~x))
#'user/show
user=> (macroexpand '(show hello))
(show-fn (quote hello))

Это называется «захват символа». Он удерживает символ от разрешения в текущем пространстве имен, как в вашем примере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...