This. Metadata on functions in 1.2 was mostly accidental, from what I
can tell.

On Oct 11, 6:39 pm, Sam Ritchie <[email protected]> wrote:
> I remember not really understanding the way defn hung metadata off of its
> functions. In 1.2, it returned different responses on successive calls to
> defn. for example:
>
> user> (clojure-version)
> "1.2.1"
> user> (defn my-func "a docstring!" [x] x)
> #'user/my-func
> user> (meta #'my-func) ;; var first
> {:ns #<Namespace user>, :name my-func, :file "NO_SOURCE_FILE", :line 1,
> :arglists ([x]), :doc "a docstring!"}
> user> (meta my-func) ;; function value, before re-defn
> {:ns #<Namespace user>, :name my-func}
> user> (defn my-func "a docstring!" [x] x)
> #'user/my-func
> user> (meta my-func) ;; function value after defn the second time
> {:ns #<Namespace user>, :name my-func, :file "NO_SOURCE_FILE", :line 1,
> :arglists ([x]), :doc "a docstring!"}
>
> 1.3 is at least consistent:
>
> user> (clojure-version)
> "1.3.0"
> user> (defn my-func "a docstring!" [x] x)
> #'user/my-func
> user> (meta #'my-func)
> {:arglists ([x]), :ns #<Namespace user>, :name my-func, :doc "a docstring!",
> :line 1, :file "NO_SOURCE_FILE"}
> user> (meta my-func)
> nil
> user> (defn my-func "a docstring!" [x] x)
> #'user/my-func
> user> (meta my-func)
> nil
>
>
>
>
>
>
>
>
>
> On Tue, Oct 11, 2011 at 6:22 PM, Chas Emerick <[email protected]> wrote:
>
> > On Oct 11, 2011, at 8:53 PM, Brian Marick wrote:
>
> > > On Oct 11, 2011, at 7:48 PM, Stuart Sierra wrote:
>
> > >> I suppose you could iterate over all known Vars and construct a map from
> > fns to the Vars that contain them. Then, given a fn, you can look up the Var
> > and get its metadata. It would break if anyone redefines or binds the Var,
> > of course.
>
> > > How about putting the information back on the function? Who would be
> > harmed by reverting back to old behavior?
>
> > Much of the information in var metadata is just not applicable to the
> > function — and, in the presence of binding and with-redefs, you want to be
> > sure to keep function and var metadata distinct.  IIRC, the application of
> > function/var metadata changed when functions became eligible for "updating"
> > via with-meta.
>
> > That said, it seems like there are some bits of var metadata that should
> > migrate to the underlying function.  Probably worth filing a bug for it.
>
> > - Chas
>
> > --
> > 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
>
> --
> Sam Ritchie, Twitter Inc
> 703.662.1337
> @sritchie09
>
> (Too brief? Here's why!http://emailcharter.org)

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

Reply via email to