2011-06-20 20 views
5

Quería envolver el macro de envío en otro para la limpieza. Sin embargo, Clojure parece tratarlo de manera diferente ... ¿o quizás estoy malinterpretando algo? Veamos el caso de simplemente crear un alias para #.Clojure: ¿el macro de envío es especial?

Esto funciona:

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

Pero esto no es así:

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

Gracias !!

P.S. alguien con suficiente reputación: crea una etiqueta de sintaxis-macros; Me encantaría poder buscar mejores preguntas similares.

Respuesta

8

La macro # dispatch es una macro de lector, y las macros de lector no pueden implementarse utilizando macros regulares; se interpretan por (lectura) en lugar de (eval).

Cuestiones relacionadas