Thanks. Yes, I know about ^String being ^{:tag String} because it is
mentioned all over the place. ^:dynamic is not. Thanks for the links, I
haven't seen them before, and they do clear this issue up.


On Wed, Jan 9, 2013 at 10:03 AM, Andy Fingerhut <andy.finger...@gmail.com>wrote:

>
> On Jan 9, 2013, at 12:37 AM, wujek.sru...@gmail.com wrote:
>
> > Hi. I am currently learning clojure, which is a nice experience, but you
> all know that.
> > I have question about certain metadata definitions, which I couldn't
> find a straight answer to on the net, and in none of the books I'm reading:
> > 1. is ^:dynamic the same as ^{:dynamic true}, just a shortcut?
>
> Yes.
>
> > 2. is (def ^:dynamic ^:blah x) the same as (def ^{:dynamic true :blah
> true} x)?
>
> Yes.
>
> > My tests show that the answer to the first 2 questions is yes, but I
> can't seem to find anything that would back that up.
>
> I don't know where else this might be documented, other than the Clojure
> source code, but one place is on the Clojure cheatsheet, in the section
> called Metadata, subsection "Abbrevs" for "Abbreviations":
>
>     http://clojure.org/cheatsheet
>     http://jafingerhut.github.com
>
> There you will also see that ^String is an abbreviation for ^{:tag
> String}, and in general ^Type for ^{:tag Type}
>
> > 3. why so many ways to do the same?
>
> Clojure developers thought it would be nice to have shorter ways to write
> metadata expressions that simply set a key's value to true, or annotated
> the type, since those are quite common cases.
>
> I am not sure about the answers to the questions below off-hand.
>  Hopefully someone else can address them.
>
> Andy
>
>
> > 4. what does ^:static do? I read on SO that it is not used any more, but
> the source code in clojure.core still has these, and various tutorials use
> them as well.
> > 5. since when does one need to use ^:dynamic on vars to be able to use
> (binding [...]) to rebind them thread-locally? Clojure in Action has a nice
> example of a simple mocking framework that uses this feature but without
> dynamic, but it is about clj 1.2 I think. 1.3 seems to require it though.
> >
> > Regards,
> > wujek
>
> --
> 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 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