I feel a blog-post coming when I figured this out :-) On Aug 17, 2:26 pm, jandot <jan.ae...@gmail.com> wrote: > Thanks Rasmus, Meikel, > > This does help a lot already. > > There still seems to be an issue with using some of the things, > though. When I do > > (require '(my-important-project core analysis-2)) > > I would logically do (in-ns 'my-important-project.analysis-2) because > that's where all the functions are that I actually have to call. > > I am then still able to print out the some-constant from core by > > (println my-important-project.core/some-constant) > > but it seems that this does not work for the congomongo connection to > a mongodb database (also referred to in the core.clj file): > > (println (my-important-project.core/fetch-one :data)) ; => No such > var: my-important-project.core/fetch-one > > For this to work I have to reference the underlying > "somnium.congomongo" directly instead of my-important-project.core: > > (println (somnium.congomongo/fetch-one :data)) ; => works > > Is there a way to make "fetch-one" and "some-constant" available > within the analysis-2 namespace using their unqualified names? What > about defining the namespace at the top of the analysis-2.clj file > like this? > > (ns my-important-project.analysis-2 > (:use [my-important-project core])) > > and just saying (require '(my-important-project analysis-2)) in the > repl (so without mentioning core)? This *does* make it possible to get > to "some-constant" directly, but still no luck with the congomongo > (fetch-one) function. > > I don't understand why... If congomongo is "used" within core and core > is "used" within analysis-2, this does not mean that the congomongo > functions are available in analysis-2 without explicit calling of > congomongo? That would be unfortunate, because I'd have to start > "using" congomongo in several places, as well as incanter and other > libraries... > > jan. > > On Aug 17, 1:10 pm, Meikel Brandmeyer <m...@kotka.de> wrote: > > > > > Hi, > > > On 17 Aug., 13:39, Rasmus Svensson <r...@lysator.liu.se> wrote: > > > > (in-ns 'my-important-project.analysis-2) > > > > or simply use the ns macro: > > > > (ns my-important-project.analysis-2) > > > Please note, that these two are *not* equivalent! > > > With ns: > > > Clojure 1.1.0 > > user=> (ns foo.bar (:refer-clojure :exclude (map))) > > nil > > foo.bar=> (def map 5) > > #'foo.bar/map > > foo.bar=> (in-ns 'user) > > #<Namespace user> > > user=> (ns foo.bar) > > java.lang.IllegalStateException: map already refers to: #'foo.bar/map > > in namespace: foo.bar (NO_SOURCE_FILE:4) > > > With in-ns: > > Clojure 1.1.0 > > user=> (ns foo.bar (:refer-clojure :exclude (map))) > > nil > > foo.bar=> (def map 5) > > #'foo.bar/map > > foo.bar=> (in-ns 'user) > > #<Namespace user> > > user=> (in-ns 'foo.bar) > > #<Namespace foo.bar> > > > ns should really only be used to define a namespace. Then you should > > use in-ns to switch namespaces in the Repl (or to ensure we are in the > > right namespace at the top of a file, which is sucked in via load). > > > Sincerely > > Meikel
-- 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