dir is a macro. It doesn't evaluate its arguments. So when you say
(dir *ns*), Clojure sees: show me what's in the namespace named
"*ns*", and there is no such namespace because *ns* is the name of a
variable which contains the name of the current namespace.

Dir is this way because for interactive use, it's convenient not to
have to quote the symbol naming the namespace.  So (dir user) and (dir
clojure.core) should work.

In your situation you'll want to call dir-fn, which is a function that
will evaluate its arguments, so:

if we assume (= *ns* 'user) (i.e. you're currently in the namespace "user")
(dir-fn *ns*)
is equivalent to
(dir-fn 'user)
and
(dir user)

HTH
// Ben


On Thu, Oct 27, 2011 at 10:57, jaime <xiejianm...@gmail.com> wrote:
> Hi there, when I tried to execute "(dir *ns*)" in REPL, I found it
> doesn't work -- with exception of:
>          Exception No namespace: *ns* found  clojure.core/the-ns
> (core.clj:3689)
> I'm not sure if I used it the right way. Following are my execution
> tries:
> =============================================================
> Clojure 1.3.0
> user=> (doc dir)
> -------------------------
> clojure.repl/dir
> ([nsname])
> Macro
>  Prints a sorted directory of public vars in a namespace
> nil
> user=> (dir *ns*)
> Exception No namespace: *ns* found  clojure.core/the-ns (core.clj:
> 3689)
> user=> *ns*
> #<Namespace user>
> user=> (the-ns *ns*)
> #<Namespace user>
> user=> (the-ns 'user)
> #<Namespace user>
> user=>
> =============================================================
> Any suggestions??
>
> --
> 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

Reply via email to