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

Reply via email to