Re: (dir *ns*) doesn't work??
The dir macro is quite picky in what it accepts as arguments. Try: (dir user) (dir clojure.core) On Thu, Oct 27, 2011 at 10:57 AM, 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
Re: (dir *ns*) doesn't work??
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
Re: (dir *ns*) doesn't work??
Oh yes you guys are right. I should have look at the source first: (defmacro dir Prints a sorted directory of public vars in a namespace [nsname] `(doseq [v# (dir-fn '~nsname)] (println v#))) from it, we can see the quote thing. Thank you all. I got it now! On Oct 27, 5:12 pm, Ben Smith-Mannschott bsmith.o...@gmail.com wrote: 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