On 16.01.2009, at 00:04, Daniel Jomphe wrote:
> When I found that out, I was surprised. My knowledge of lisp comes
> from reading, in the past few months:
> - ANSI Common Lisp
> - Practical Common Lisp
> and, some years ago, a few more things.
The best book to read about macros is in my opinion Paul Graham's "On
Lisp", which is now available for free download:
http://www.paulgraham.com/onlisp.html
It covers mostly Common Lisp plus a bit of Scheme, but many of the
ideas carry over very well to Clojure.
> Even now that I hurt myself against this limitation, I'm still to make
> complete sense out of it. I understand that macros aren't known to
> functions because functions only get to see their expansions, but it's
> fuzzy in my mind how some functions interact well with macros while
> some others don't.
The fundamental restriction is that you cannot pass macros to
arguments as functions, and that is exactly what would be required to
do a reduce over and. The universal workaround is to define a
function that contains nothing but the macro, such as
(fn [x y] (and x y))
which can also be written in Clojure using the shorthand notation
#(and %1 %2)
Here the macro gets expanded inside the function *body*, but what you
pass around is the function *object*.
Konrad.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Clojure" group.
To post to this group, send email to [email protected]
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
-~----------~----~----~----~------~----~------~--~---