On 9 Wrz, 14:25, Andrew Gwozdziewycz <apg...@gmail.com> wrote:
> The fact that Lisp macros actually operate on the AST means that Lisp
> macros can make *changes* to the AST (insert things, remove things,
> rearrange things), and *not* just substitute FOO for BAR. This is a
> hell of a lot more powerful.
>
> --http://www.apgwoz.com

To be fair to C and C++ they allow changing AST:

#define UNLESS(x,y) {if (!(x)) {y;} };

This macro changes (UNLESS x y) to (if (not x) y) - this is different
AST trees.

The only difference I see is that in C you have to work with
characters, when in lisp you work with lists, and that in C you can
only use preprocessor directives at compile time (you can't output
diffrent code in macro depending on the structure of its arguments),
when in lisp you can use lisp at compile time to change what code will
be created by macro.

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@googlegroups.com
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
clojure+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to