2011-06-20 6 views
5

Chciałem owinąć makro wysyłki w innym dla czystości. Jednak Clojure traktuje to inaczej ... a może coś nie rozumiem? Spójrzmy na przypadek stworzenia aliasu dla #.Clojure - czy makro wysyłki jest wyjątkowe?

to działa:

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

Ale tego nie robi:

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

Dzięki !!

P.S. ktoś z wystarczającą liczbą rep: proszę utworzyć znacznik składni-makr; Chciałbym móc lepiej wyszukiwać podobne pytania.

Odpowiedz

8

Makro # dispatch jest makrem czytnika, a makr czytnika nie można zaimplementować za pomocą zwykłych makr; są interpretowane przez (odczyt) zamiast (eval).