Hi, On Jul 13, 11:52 am, Mike Mazur <mma...@gmail.com> wrote:
> I asked in the IRC channel about metadata on functions[1], and was > told that it's indeed possible in 1.2. I tried this at the REPL and > saw the following behavior (which looks like a bug): > > user=> (defn ^{:foo "v1.0"} mfoo "mfoo docstring" [] (println "foo v1.0")) > #'user/mfoo > user=> (meta mfoo) > {:ns #<Namespace user>, :name mfoo} > user=> (mfoo) > foo v1.0 > nil > user=> (defn ^{:foo "v2.0"} mfoo "mfoo docstring" [] (println "foo v2.0")) > #'user/mfoo > user=> (meta mfoo) > {:ns #<Namespace user>, :name mfoo, :file "NO_SOURCE_PATH", :line > 33, :arglists ([]), :doc "mfoo docstring", :foo "v1.0"} > user=> (mfoo) > foo v2.0 > nil Metadata on functions works as expected: user=> (meta (with-meta (fn [] :with-meta) {:foo "v1.0"})) {:foo "v1.0"} Hinting the argument to defn (or providing the optional meta map) attaches the metadata to the Var: user=> (defn ^{:mfoo "v1.0"} mfoo "mfoo docstring" {:foo "v1.0"} [] (println "foo v1.0")) #'user/mfoo user=> (meta #'mfoo) {:ns #<Namespace user>, :name mfoo, :file "NO_SOURCE_PATH", :line 1, :arglists ([]), :foo "v1.0", :doc "mfoo docstring", :mfoo "v1.0"} user=> (meta mfoo) {:ns #<Namespace user>, :name mfoo} I'm not sure, though, why the metadata gets moved to the function on redefinition. Sincerely Meikel -- 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