I'm finding that namespaces don't seem to behave as I expect intuitively, or according to the reference. It's quite possible I'm in the wrong here though, as I'm just kicking clojure's tires at this point.
Here is the relevant doc: http://clojure.org/special_forms (def symbol init?) Creates and interns or locates a global var with the name of symbol and a namespace of the value of the current namespace (*ns*). In the test below, which succeeds, the var does not appear to end up in the "current namespace" per this definition. Am I misinterpreting something, or is this a deviation from the spec/reference? (ns learn.clojure.test.core (:use [clojure.test])) (deftest namespace2 (in-ns 'my.new.namespace) ;confirm the current namespace (is (= "my.new.namespace" (str *ns*))) ;attempt to def a var in the current namespace (def anything 10) ;the var is not defined in the current namespace (is (nil? (ns-resolve *ns* 'anything))) ;the var is however definined in the orginal namespace (is (not (nil? (ns-resolve (find-ns 'learn.clojure.test.core) 'anything)))) (is (= 10 learn.clojure.test.core/anything))) On Aug 15, 1:42 pm, Alan Malloy <a...@malloys.org> wrote: > On Aug 15, 6:16 am, Richard Rattigan <ratti...@gmail.com> wrote: > > > > > > > > > > > I don't understand why this test would fail - can anyone explain why? > > > (ns learn.clojure.test.core > > (:use [clojure.test])) > > (deftest namespaces > > (in-ns 'my.new.namespace) > > (is (= "my.new.namespace" (str *ns*))) > > (is (= `anything 'my.new.namespace/anything))) > > > expected: (= (quote learn.clojure.test.core/anything) (quote > > my.new.namespace/anything)) > > actual: (not (= learn.clojure.test.core/anything my.new.namespace/ > > anything)) > > > When I try this on the REPL, it seems to work as expected: > > > user=> (in-ns 'my.new.namespace) > > #<Namespace my.new.namespace> > > my.new.namespace=> `anything > > my.new.namespace/anything > > The syntax quoting happens at read time, before in-ns is executed. You > can do something similar at the repl: > > user=> (do (in-ns 'tmp) `foo) > user/foo -- 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