Hi Laurent,

You're right, there is no such thing as a "class defined in a
namespace", I meant to ask instead, defines a var, which still would
not be correct. Referring to the record as protocol.test.person
worked. Thanks.

-Brent

On Jun 22, 6:07 pm, Laurent PETIT <laurent.pe...@gmail.com> wrote:
> hello,
>
> 2010/6/22 Brent Millare <brent.mill...@gmail.com>:
>
>
>
>
>
> > user=> (in-ns 'protocol.test)
> > #<Namespace protocol.test>
> > protocol.test=> (defrecord person [name age])
> > protocol.test.person
> > protocol.test=> (person. "bobby" 23)
> > #:protocol.test.person{:name "bobby", :age 23}
> > protocol.test=> (in-ns 'user)
> > #<Namespace user>
> > user=> (protocol.test/person. "alice" 2)
> > java.lang.IllegalArgumentException: Unable to resolve classname:
> > person (NO_SOURCE_FILE:45)
>
> > Using 1.2 Snapshot:
> > commit d694d6d45fb46195ae4de01aab9a2b9f9c06355f
> > Date:   Thu May 27 23:00:45 2010 -0400
>
> > I was expecting defrecord to define a class in the protocol.test
> > namespace and should thus be accessible in another namespace with a
> > fully qualified symbol but instead got an error. Is this the defined
> > behavior?
>
> No.
> defrecord defines a class whose simple name matches the name of the
> record, and whose package matches *ns* (with the usual - to _
> conversion).
> So while in another namespace, try (protocol.test.person. "alice" 2)
> instead of (protocol.test/person. "alice" 2).
> There's no such thing as a "class defined in a namespace". Classes are
> java constructs, not clojure's.
>
> HTH,
>
> --
> Laurent

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