Xref: utzoo comp.lang.lisp:3681 comp.lang.scheme:1685 Path: utzoo!attcan!uunet!decwrl!shelby!neon!lucid.com!jwz From: jwz@lucid.com (Jamie Zawinski) Newsgroups: comp.lang.lisp,comp.lang.scheme Subject: Re: Virtues of Lisp syntax Message-ID: Date: 19 Sep 90 08:10:08 GMT References: <10466@life.ai.mit.edu> <6217@castle.ed.ac.uk> <10722@life.ai.mit.edu> <20501@well.sf.ca.us> Sender: news@lucid.com Organization: Lucid, Inc., Menlo Park, CA Lines: 24 In-reply-to: jjacobs@well.sf.ca.us's message of 18 Sep 90 21:36:03 GMT In article <20501@well.sf.ca.us> jjacobs@well.sf.ca.us (Jeffrey Jacobs) writes: > > Most applications programmers (as opposed to "language implementors"), make > very little use of macros. Nor do they have much reason to do source level > debugging of macros supplied with their particular implementation. IOW, > *most* of their debugging is done on functions, not macros. And if they do > use macros, they are usually fairly simple and straightforward. I disagree; macros are Common Lisp's only serious hook into the compiler, and I use them all the time when writing code that needs to be efficient. In a pagination system I worked on, we used macros to turn a structure describing a finite-state machine into a parser for it. The strength of the thing was the fact that, once all of the macroexpansion was done, there were a lot of clauses of the form (= 4 4) which the compiler optimized away. No need to learn the meta-language that things like lex use. And what other language lets you define new control structures? (And though I'm a "language implementor" now, I wasn't then. :-)) Saying that most macros are fairly simple is like saying that most functions aren't recursive. It's probably true, but it's not really that meaningful a generalization. -- Jamie