5 ms·
Clojure is currently my favorite language, partly for the pragmatic choices it made, but these pragmatic choices will limit its continued use. Hygienic macros
by ema 14y ago
Clojure is currently my favorite language, partly for the pragmatic choices it made, but these pragmatic choices will limit its continued use.
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.
- Tyr42 14y agoI 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.
- nbouscal 14y agoI'm still too new to Lisp to answer this question, but I have seen the book Let Over Lambda recommended as having answers to that and similar questions.
- asynchrony 14y agoHygienic 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.