The Great Macro Debate
The Great Macro Debate was a panel between Jeremy Brown and Richard Gabriel (on the side against macros) and Pascal Costanza and Guy Steele (for macros), moderated by Dan Weinreb, that took place at the 2009 International Lisp Conference.

Thanks to Paul Graham, we all know that macros can be awesome. However, over-use of macros for defining new syntaxes can quickly lead to unmaintainable code. This was effectively parodied in the "Lisp at Light Speed" blog in 2005: http://web.archive.org/web/20070706135848/brucio.blogspot.com/2005/03/concision-is-equivalent-to.html.

The debate continues, right here on CLiki!


Lisp macros are not syntactic extensions! They are a full-fledged metaprogramming facility. Don't use macros to make new, stupider ways of writing for loops, use them to express domain concepts. Here is how I like to think about macros: http://news.ycombinator.com/item?id=645338. Vladimir Sedach


Vlad, I agree whole-heartedly. Lisp stands for LISt Processing, so it amazes me that LOOP is so needlessly confusing. LOOP should not be extended, rather, the collection itself should be extended. Ruby does it perfectly. -- Andrew Pennebaker


Vladimir, If you want to criticize macros then provide criticism. What you're doing here is essentially knee-jerk reactionary propaganda. Thanks, The concerned public.

I'm planning to write an inflammatory blog post that will name names and point fingers and hopefully have some coherent arguments and insightful criticism. Vladimir Sedach

I should probably state what I want to get out of all this:

A style guide to writing macros that explains what to do and not to do and why. It's quite obvious from all the "def" macro packages that people new to CL have a serious case of 1. NIH (Not Invented Here) and 2. NKWTWM (Not Knowing Why To Write Macros). Vladimir Sedach


Document