On 9 Wrz, 14:25, Andrew Gwozdziewycz <[email protected]> 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 [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en