On Sat, Jan 22, 2011 at 10:39 AM, Stuart Halloway
<[email protected]> wrote:
>> 1. You could optionally put a docstring after the value of a normal
>> def -- (def foo 17 "seventeen").
>
> def has supported an optional doc string since 1.2. I have just updated the
> wiki and docstring to reflect this.
My Clojure 1.2 REPL says otherwise:
user=> (def x 32 "foo")
#<CompilerException java.lang.Exception: Too many arguments to def
(NO_SOURCE_FILE:73)>
>> (defn foo
>> "Docstring -- works currently"
>> [x y]
>> (+ (* x x) y))
>
> AFAIK this has always worked. If you see this not working, please post
> details to reproduce.
Actually, it quasi-works. In both cases the var gets :doc "string"
metadata. Only if the arity implementation is wrapped in parentheses
does the function object itself also get the :doc "string" metadata.
(And the arities metadata, and a lot of other metadata.)
user=> (defn bar "foo" [x] (* x x))
#'user/bar
user=> (meta bar)
{:ns
#<Namespace user>,
:name bar}
user=> (meta #'bar)
{:ns
#<Namespace user>,
:name bar,
:file
"NO_SOURCE_PATH",
:line 74,
:arglists ([x]),
:doc "foo"}
user=> (defn bar "foo" ([x] (* x x)))
#'user/bar
user=> (meta bar)
{:ns
#<Namespace user>,
:name bar,
:file
"NO_SOURCE_PATH",
:line 74,
:arglists ([x]),
:doc "foo"}
user=> (meta #'bar)
{:ns
#<Namespace user>,
:name bar,
:file
"NO_SOURCE_PATH",
:line 77,
:arglists ([x]),
:doc "foo"}
user=>
--
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