(I've moved this to a top-level discussion because it was buried too far into the "Haskell & Macros" discussion to be seen)|
I'll be the first to admit that Slashdot is a poor source for hard factual data, but there is an interesting link to how ITA Software used Common Lisp for their airline routing software (used by Orbitz among others.)
The inimitable Paul Graham has a copy of some e-mail describing why ITA selected Common Lisp, their design challenges, etc.
What I found most interesting is that they did not choose CL for its garbage collection, recursive programming techniques, or ability to evaluate arbitrary code fragments, but rather for its MACRO facilities.
That's right -- they use an imperitive, destructive (set!), and altogether un-functional approach to this project, but found that CL was still a big win because the MACRO facilities allowed them to create useful syntax that facilitated short, readable programs.
So -- I'd say that MACROS are quite useful. And the reasons ITA cites hold true even in the case of a lazy language.