Clojure - особенный макрос отправки? - PullRequest
5 голосов
/ 20 июня 2011

Я хотел обернуть макрос отправки в другой для чистоты. Однако Clojure, похоже, относится к этому по-другому ... или, может быть, я что-то неправильно понимаю? Давайте рассмотрим случай простого создания псевдонима для #.

Это работает:

(defmacro mkDef [x y] `~(list 'def x y))

Но это не так:

(defmacro mkDispatch [x] `~(list '# x))

Спасибо !!

P.S. кто-то с достаточным количеством представителей: пожалуйста, создайте тег синтаксиса-макроса; Я хотел бы иметь возможность искать похожие вопросы лучше.

1 Ответ

8 голосов
/ 20 июня 2011

Макрос # dispatch является макросом чтения, и макросы чтения не могут быть реализованы с использованием обычных макросов;они интерпретируются (читать) вместо (eval).

...