Reader Macros in Common Lisp
lisper.in
lisper.in
When Dylan went from prefix to infix syntax the reader macro indirection got all the more elaborate: what started out as a trivial reader macro that treated colons differently started delegating to a full-blown lex & yacc style parser instead.
All the better, most of this was achieved modularly: Lisp editor buffers and Lisp listeners would run happily alongside Dylan editor buffers and Dylan listeners, Lisp code could still compile load and run alongside Dylan code, and Lisp classes could interoperate cleanly with Dylan classes.
There's no question that Common Lisp and its predecessors are some of the most formidably adaptable and hackable programming environments ever created. Only Smalltalk really comes close, and they have complementary strengths I think. Standard macros, reader macros and a comprehensive MOP are some of the key things that stand out in Common Lisp's favour in that hackability comparison.
I've occasionally wondered if we should take the old emulator sources and re-package them as a separate repository. It isn't clear that anyone knows how to make them run any longer or whether or not they'd run on anything other than LispWorks or if this would be of anything other than a historical curiosity.
You often hear people using the idea of completeness to say that their favourite language can, of course, do anything. But in reality some languages just aren't very well suited to it, or would require some horrendous amount of coding and abstractions (Greenspuns Tenth rule comes to mind [1]).
So whenever some new idea in programming becomes popular, whether it's pattern matching [2], concurrency [3], or even the web (HN), you can always rest easy because someone will be able to quite quickly write that functionality into Lisp itself. The only difficulty is in finding out about the libraries in the first place!
[1] https://en.wikipedia.org/wiki/Greenspun%27s_tenth_rule [2] https://github.com/m2ym/optima [3] http://lparallel.org/
I wasn't aware that this is possible in LISP, too. That's really great!
That's not such a big deal, because there are plenty of tools for conventional input parsing in Common Lisp.
Isn't that what the article shows how to do?
Unfortunately the Dialecting wikipedia link given in above comment now just redirects to http://en.wikipedia.org/wiki/Dialect_(computing)
The original page listed... Forth, Lisp, Rebol, Ruby & XL - https://web.archive.org/web/20140708161345/http://en.wikiped...