Re: Confusion with doc macro
> No, I'm looking for a copy meta routine. > > The mysterious defmeta macro does this, in one call. > > (defmeta a map) > > (= (meta (var a)) (meta map)) This will do what you want, but I would not advise using it: (defmacro def-with-meta [symbol init] `(let [m# (meta ~init)] (def ~symbol ~init) (reset-meta! (var ~symbol) m#) (var ~symbol))) Then: (= (meta (var symbol)) (meta init)) ;=> true (= (meta (var symbol)) (meta symbol)) ;=> true > On Oct 31, 4:20 pm, Mark Rathwell wrote: >> def already adds metadata on the symbol as metadata on the var. Did >> you need more than this (below)? >> >> user> (def ^{:doc "foo"} x [1 2 3]) >> #"user/x >> >> user> (meta (var x)) >> {:ns #, :name x, :doc "foo", :line 1, :file "NO_SOURCE_FILE"} >> >> user> (doc x) >> - >> user/x >> foo >> nil >> >> user> (defn ^{:doc "foo foo"} xx [] (println "hello")) >> #'user/xx >> >> user> (meta (var xx)) >> {:arglists ([]), :ns #, :name xx, :doc "foo foo", >> :line 1, :file "NO_SOURCE_FILE"} >> >> user> (doc xx) >> - >> user/xx >> ([]) >> foo foo >> nil >> >> >> >> >> >> >> >> On Mon, Oct 31, 2011 at 4:08 PM, Sean Devlin >> wrote: >> > Okay, then I need a hand with something then. I'm trying to come up >> > with a macro that does the following: >> >> > (defmacro def-with-meta ...) -> You supply this >> >> > (def-with-meta symbol init) >> >> > (= (meta (var symbol)) (meta init)) -> True >> >> > Any suggestions folks? >> >> > Sean Devlin >> >> > On Oct 31, 2:59 pm, Mark Rathwell wrote: >> >> It uses (meta (var common/basic-logger)). >> >> >> On Mon, Oct 31, 2011 at 2:28 PM, Sean Devlin >> >> wrote: >> >> > I'm a bit confused by what the doc macro is doing. Doesn't it simply >> >> > work of the metadata of what is passed to it? >> >> >> > I try this at the REPL: >> >> >> > user=> (doc common/basic-logger) >> >> > - >> >> > decorators.common/basic-logger >> >> > nil >> >> > nil >> >> > nil >> >> >> > For the following item: >> >> >> > user=> (meta common/basic-logger) >> >> > {:ns #, :name basic-logger, :file >> >> > "decorators/common.clj", :line 13, :arglists ([f]), :doc "This is a >> >> > very basic logging decorator."} >> >> >> > Shouldn't I see something like this: >> >> >> > user=> (doc common/basic-logger) >> >> > - >> >> > decorators.common/basic-logger >> >> > ([f]) >> >> > This is a very basic logging decorator. >> >> > nil >> >> >> > Any help would be great. >> >> >> > -- >> >> > 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 > > -- > 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
Re: Confusion with doc macro
No, I'm looking for a copy meta routine. The mysterious defmeta macro does this, in one call. (defmeta a map) (= (meta (var a)) (meta map)) On Oct 31, 4:20 pm, Mark Rathwell wrote: > def already adds metadata on the symbol as metadata on the var. Did > you need more than this (below)? > > user> (def ^{:doc "foo"} x [1 2 3]) > #"user/x > > user> (meta (var x)) > {:ns #, :name x, :doc "foo", :line 1, :file "NO_SOURCE_FILE"} > > user> (doc x) > - > user/x > foo > nil > > user> (defn ^{:doc "foo foo"} xx [] (println "hello")) > #'user/xx > > user> (meta (var xx)) > {:arglists ([]), :ns #, :name xx, :doc "foo foo", > :line 1, :file "NO_SOURCE_FILE"} > > user> (doc xx) > - > user/xx > ([]) > foo foo > nil > > > > > > > > On Mon, Oct 31, 2011 at 4:08 PM, Sean Devlin wrote: > > Okay, then I need a hand with something then. I'm trying to come up > > with a macro that does the following: > > > (defmacro def-with-meta ...) -> You supply this > > > (def-with-meta symbol init) > > > (= (meta (var symbol)) (meta init)) -> True > > > Any suggestions folks? > > > Sean Devlin > > > On Oct 31, 2:59 pm, Mark Rathwell wrote: > >> It uses (meta (var common/basic-logger)). > > >> On Mon, Oct 31, 2011 at 2:28 PM, Sean Devlin > >> wrote: > >> > I'm a bit confused by what the doc macro is doing. Doesn't it simply > >> > work of the metadata of what is passed to it? > > >> > I try this at the REPL: > > >> > user=> (doc common/basic-logger) > >> > - > >> > decorators.common/basic-logger > >> > nil > >> > nil > >> > nil > > >> > For the following item: > > >> > user=> (meta common/basic-logger) > >> > {:ns #, :name basic-logger, :file > >> > "decorators/common.clj", :line 13, :arglists ([f]), :doc "This is a > >> > very basic logging decorator."} > > >> > Shouldn't I see something like this: > > >> > user=> (doc common/basic-logger) > >> > - > >> > decorators.common/basic-logger > >> > ([f]) > >> > This is a very basic logging decorator. > >> > nil > > >> > Any help would be great. > > >> > -- > >> > 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 -- 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
Re: Confusion with doc macro
def already adds metadata on the symbol as metadata on the var. Did you need more than this (below)? user> (def ^{:doc "foo"} x [1 2 3]) #"user/x user> (meta (var x)) {:ns #, :name x, :doc "foo", :line 1, :file "NO_SOURCE_FILE"} user> (doc x) - user/x foo nil user> (defn ^{:doc "foo foo"} xx [] (println "hello")) #'user/xx user> (meta (var xx)) {:arglists ([]), :ns #, :name xx, :doc "foo foo", :line 1, :file "NO_SOURCE_FILE"} user> (doc xx) - user/xx ([]) foo foo nil On Mon, Oct 31, 2011 at 4:08 PM, Sean Devlin wrote: > Okay, then I need a hand with something then. I'm trying to come up > with a macro that does the following: > > (defmacro def-with-meta ...) -> You supply this > > (def-with-meta symbol init) > > (= (meta (var symbol)) (meta init)) -> True > > Any suggestions folks? > > Sean Devlin > > On Oct 31, 2:59 pm, Mark Rathwell wrote: >> It uses (meta (var common/basic-logger)). >> >> >> >> >> >> >> >> On Mon, Oct 31, 2011 at 2:28 PM, Sean Devlin >> wrote: >> > I'm a bit confused by what the doc macro is doing. Doesn't it simply >> > work of the metadata of what is passed to it? >> >> > I try this at the REPL: >> >> > user=> (doc common/basic-logger) >> > - >> > decorators.common/basic-logger >> > nil >> > nil >> > nil >> >> > For the following item: >> >> > user=> (meta common/basic-logger) >> > {:ns #, :name basic-logger, :file >> > "decorators/common.clj", :line 13, :arglists ([f]), :doc "This is a >> > very basic logging decorator."} >> >> > Shouldn't I see something like this: >> >> > user=> (doc common/basic-logger) >> > - >> > decorators.common/basic-logger >> > ([f]) >> > This is a very basic logging decorator. >> > nil >> >> > Any help would be great. >> >> > -- >> > 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 -- 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
Re: Confusion with doc macro
Okay, then I need a hand with something then. I'm trying to come up with a macro that does the following: (defmacro def-with-meta ...) -> You supply this (def-with-meta symbol init) (= (meta (var symbol)) (meta init)) -> True Any suggestions folks? Sean Devlin On Oct 31, 2:59 pm, Mark Rathwell wrote: > It uses (meta (var common/basic-logger)). > > > > > > > > On Mon, Oct 31, 2011 at 2:28 PM, Sean Devlin wrote: > > I'm a bit confused by what the doc macro is doing. Doesn't it simply > > work of the metadata of what is passed to it? > > > I try this at the REPL: > > > user=> (doc common/basic-logger) > > - > > decorators.common/basic-logger > > nil > > nil > > nil > > > For the following item: > > > user=> (meta common/basic-logger) > > {:ns #, :name basic-logger, :file > > "decorators/common.clj", :line 13, :arglists ([f]), :doc "This is a > > very basic logging decorator."} > > > Shouldn't I see something like this: > > > user=> (doc common/basic-logger) > > - > > decorators.common/basic-logger > > ([f]) > > This is a very basic logging decorator. > > nil > > > Any help would be great. > > > -- > > 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
Re: Confusion with doc macro
It uses (meta (var common/basic-logger)). On Mon, Oct 31, 2011 at 2:28 PM, Sean Devlin wrote: > I'm a bit confused by what the doc macro is doing. Doesn't it simply > work of the metadata of what is passed to it? > > I try this at the REPL: > > user=> (doc common/basic-logger) > - > decorators.common/basic-logger > nil > nil > nil > > For the following item: > > user=> (meta common/basic-logger) > {:ns #, :name basic-logger, :file > "decorators/common.clj", :line 13, :arglists ([f]), :doc "This is a > very basic logging decorator."} > > Shouldn't I see something like this: > > user=> (doc common/basic-logger) > - > decorators.common/basic-logger > ([f]) > This is a very basic logging decorator. > nil > > Any help would be great. > > -- > 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
Confusion with doc macro
I'm a bit confused by what the doc macro is doing. Doesn't it simply work of the metadata of what is passed to it? I try this at the REPL: user=> (doc common/basic-logger) - decorators.common/basic-logger nil nil nil For the following item: user=> (meta common/basic-logger) {:ns #, :name basic-logger, :file "decorators/common.clj", :line 13, :arglists ([f]), :doc "This is a very basic logging decorator."} Shouldn't I see something like this: user=> (doc common/basic-logger) - decorators.common/basic-logger ([f]) This is a very basic logging decorator. nil Any help would be great. -- 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