On 2010 Apr 10, at 12:29 AM, Per Vognsen wrote:
Not surprising. The binding form deals with dynamic run-time extents.
Here you are treating it like Common Lisp's macrolet.
When you
explicitly wrap the inner expression in eval, then the run time of the
outer code effectively becomes the compile time of the inner code, so
that's why your earlier code triggered this surprising behavior.
Yup.
Trust the code.
I'm trying to work from the documentation.
If you look at DefExpr.emit(), you can see that it
sets the metadata from scratch based on the metadata attached to the
name symbol. This is what you would expect anyway, or redefinition
would be very weird.
True.
The differences between def and binding are also weird, since binding
does not also shadow the meta-data on the var, so not only :macro will
be wrong, but :file, :line, :arglists could also be wrong.
I've got to let this all sink in for while. Thanks for your discussion!
-Doug
--
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
To unsubscribe, reply using "remove me" as the subject.