On Tue, Jan 27, 2009 at 7:43 AM, Chouser <chou...@gmail.com> wrote:

>
> On Tue, Jan 27, 2009 at 8:51 AM, Mark Volkmann
> <r.mark.volkm...@gmail.com> wrote:
> >
> > Are these statements correct? Actually, I know some are correct
> > because I just looked though the source. Hopefully others that haven't
> > will find this interesting.
> >
> > Symbol objects have a String name and a String namespace name, but no
> value.
> > Var objects have references to a Symbol object, a Namespace object and
> > an Object object which is its "root value".
> > Namespace objects have a reference to a Map that holds associations
> > between Symbol objects and Var objects.
> > In Clojure, the term "interning" typically refers to adding a
> > Symbol-to-Var mapping to a Namespace.
>
> Those all sound right to me, with the (very minor) caveat that
> Namespaces also have a aliases map.
>
> > Why don't Symbol objects have a reference to a Namespace object
> > instead of a String that is a Namespace name?
>
> The namespace part of a symbol doesn't have to refer to any existing
> namespace.  This is useful for example when using the symbol as its
> own value.
>
> user=> (namespace 'foo/bar)
> "foo"
>
> The namespace part can even be 'nil', which is probably the most
> common case for symbols created by the reader:
>
> user=> (def expr (read (java.io.PushbackReader. (java.io.StringReader.
> "(+ 1 2)"))))
> user=> (first expr)
> +
> user=> (namespace (first expr))
> nil


This nil namespace seems a bit odd.  Wasn't expr created in the user
namespace?


>
> Or even just:
>
> user=> (namespace 'zipmap)
> nil
>
> --Chouser
>
> >
>

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