>
> *ns* is a dynamic var, so it points to the current namespace when your 
> function is running. Most code doesn't switch into a target ns in order to 
> execute functions from it.
>

I understand that, and I understand most code does not switch into the 
target ns. But this is not most code, this is the code generated by the 
gen-class directive to bootstrap your -main method from java. Both lein and 
clojure.main bootstrap your main method from inside "user", but gen-class 
does so from inside "clojure.core".

So I want to know:

1) Why does the generated java class from gen-class has "clojure.core" as 
its current namespace?

2) Why doesn't the (ns) function inside my namespace change the current 
namespace?

Thanks


On Tuesday, 20 June 2017 17:25:30 UTC-7, Sean Corfield wrote:
>
> The “trick” I’ve adopted to get around this:
>
>  
>
> (def my-ns **ns**)
>
>  
>
> I stick that near the top of any file in which I want to refer to _*that*_ 
> namespace (as opposed to whatever the _*current*_ value of **ns** is 
> during evaluation, since it’s dynamic).
>
>  
>
> Sean Corfield -- (970) FOR-SEAN -- (904) 302-SEAN
> An Architect's View -- http://corfield.org/
>
> "If you're not annoying somebody, you're not really alive."
> -- Margaret Atwood
>
>  
>
> On 6/20/17, 4:46 PM, "Didier" <clo...@googlegroups.com <javascript:> on 
> behalf of did...@gmail.com <javascript:>> wrote:
>
>  
>
> Take this code:
>
>  
>
> (ns dda.main
>
>   (:gen-class))
>
>  
>
> (defn -main [] (prn (ns-name *ns*)))
>
>  
>
>
> If you bootstrap this through clojure.main, such as what lein does, it 
> will print the namespace as "user". But if you bootsrap it through the 
> generated java main class, it will return "clojure.core".
>
>  
>
> My intuition would have assumed it would be running under "dda.main" as 
> the *ns*, or at least under "user", since that's a common convention.
>
>  
>
> I'm curious to know why "clojure.core"?
>
> -- 
> You received this message because you are subscribed to the Google
> Groups "Clojure" group.
> To post to this group, send email to clo...@googlegroups.com <javascript:>
> Note that posts from new members are moderated - please be patient with 
> your first post.
> To unsubscribe from this group, send email to
> clojure+u...@googlegroups.com <javascript:>
> 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 unsubscribe from this group and stop receiving emails from it, send an 
> email to clojure+u...@googlegroups.com <javascript:>.
> For more options, visit https://groups.google.com/d/optout.
>
>

-- 
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 unsubscribe from this group and stop receiving emails from it, send an email 
to clojure+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to