On Fri, Apr 4, 2008 at 1:56 PM, Alex Shinn <[EMAIL PROTECTED]> wrote: > There seems to be a lot of confusion in the Chicken > community, and the Lisp community in general, about the > different macro systems, so I thought provide some > background information and discussion of the eggs available > in Chicken and their uses.
An excellent roundup, Alex. This should really go into the wiki. > > So to summarize SYNTAX-CASE does let you write both high and > low level macros and preserve hygiene, and has some nice > ideas, but I really dislike it and discourage it's use for > the following reasons: > > 1) very, very large and baroque API and reader extensions > > 2) forces a single destructuring idiom tightly integrated > with the macro system, when this should be a purely > orthogonal concept > > 3) makes it very difficult to play along with alternate > macro systems > > 4) implicit unhygienic interaction between SYNTAX-CASE and > SYNTAX, and in general confusing semantics > > 5) identifier syntax (another huge, ugly can of worms I > won't even get into here) > And more: syntax-case does away with the fundamental idea of Lisp, code-data isomophism. You are effectively manipulating the AST of your program and the list-processing facilities of your source language are useless. cheers, felix _______________________________________________ Chicken-users mailing list [email protected] http://lists.nongnu.org/mailman/listinfo/chicken-users
