Re:Dialects of Lisp
by asynchrony on Friday February 22, 2013 @10:42PM
(#5268449)
Hygienic macros prevent accidental symbol capture.
They don't prevent intentional symbol capture.
You may be thinking of the limitations of pattern based macros, but many Scheme systems provide hygienic procedural macros.
I am curious, what do you think hygienic macros break?
I'm a fan of Racket, and I haven't yet found anything that it's macros can't do.
Hygienic macros often prevent one from shooting oneself into the foot, but they prevent also some truly elegant code. Having lists and vectors with a common interface is cool, but that the semantics of conj is different for both is annoying. Easy java interop is worth a lot, but it prevents call/cc.
It's probable that i will gladly use Clojure for the next 10, maybe even 20 years, but it won't be the programming language my grandchildren will ask me to shut up about.