Hi Jan,
 
OK, I get it, thanks a lot for your quick answer.
 
Eric

Le samedi 15 février 2014 17:49:57 UTC+1, Jan Herich a écrit :

> Hello Eric,
>
> You can rewrite this functionality with key# and r# instead of ~'key and 
> ~'r and it would work just as well, 
> it's only not necessary to use unique symbols here, because you are not 
> using them in the function body
> anyway, so there is no danger of accidental var capture. 
>
> To be honest, i would rather use underscore symbols (written as ~'_ inside 
> macro definition) to indicate 
> that i won't use any of the first two parameters in the function body. 
>
> Dňa sobota, 15. februára 2014 9:32:48 UTC+1 Eric napísal(-a):
>>
>> 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 ~'keyis 
>> 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 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
--- 
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 clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.

Reply via email to