On Fri, Nov 27, 2009 at 8:45 AM, Stefan Kamphausen
<ska2...@googlemail.com>wrote:

> > Why?  Well because #^ attaches the metadata to the next read form.
> > What's the next read form?  It's 'greet.  But in fact 'greet is just
> > sugar for (quote greet).  So we're actually affixing the metadata to a
> > list containing two symbols (quote and greet).  When the compiler
> > evaluates (quote greet) it turns it into just the symbol greet and then
> > throws the list (and thus our metadata) away.
>
> This is subtle!  It really feels like one of those things that will
> still feel creepy another 50 years from now.
> I'll have to meditate on this a bit.


Maybe this ought to be fixed; i.e., if the reader sees #^{meta} 'foo it
applies the metadata to foo first, then quotes it, resulting in the same
thing as (quote #^{meta} foo).

It would mean the reader would have to see #^{meta} and then store that,
then read the next item. Currently, if the next item is also a reader macro,
it expands that and then applies the meta to the result. Instead, if the
next item was a read macro with an "argument" (like ' or even ^ or @ or
whatever) it would apply the meta to the argument, then apply the new reader
macro.

-- 
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

Reply via email to