Hi,
I'm reading the second edition of Joy of Clojure (the MEAP), and there is
an example that I don't quite get, and I was hoping someone here could help
me. It's in chapter 8, talking about macros. There is an example of a macro
called def-watched, which prints a message each time the root binding of a
var changes:
(defmacro def-watched [name & value]
`(do
(def ~name ~@value)
(add-watch (var ~name)
:re-bind
(fn [~'key ~'r old# new#]
(println old# " -> " new#)))))
I understand almost everything, but I don't see why we have to use ~'keyand
~'r rather than simply key# and r#. As I understand it, the first option (
~'var-name) would be useful to capture an external var inside the macro,
but I don't see the point of doing it here, especially since ~'key is
defined in the parameter list, so that it would anyway hide any external
var. Could someone please help me understand this?
Thank you in advance,
Eric
--
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
---
You received this message because you are subscribed to the Google Groups
"Clojure" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.