Maybe this could help: http://richhickey.github.com/clojure-contrib/ns-utils-api.html#clojure.contrib.ns-utils/immigrate
HTH, -- Laurent 2010/5/9 Mark Engelberg <mark.engelb...@gmail.com>: > I've seen people say here that it's relatively easy to break up a > namespace into smaller components, so I'm wondering if I'm missing > something. I'd appreciate some guidance about how to keep namespaces > well-organized. > > In Python, let's say I have a library "mylibrary.py", and from various > files I say "from mylibrary import *". > If I want to split mylibrary.py into two parts, say, library1.py and > library2.py, then I can just change mylibrary.py to say: > from library1 import * > from library2 import * > > All the functions from library1 and library2 become available to > mylibrary, which in turn becomes available to all files that import > from mylibrary. In other words, nothing breaks by splitting into two > files. > > Now in Clojure, let's say I have a file mylibrary.clj and from various > files I say: > (ns a-random-file-that-consumes-my-library > (:use mylibrary)) > > So now, if I want to split mylibrary.clj into library1.clj and > library2.clj, I change mylibrary.clj to say: > (ns mylibrary > (:use library1 library2)) > > Unfortunately, this seems to break my consumer code. Although > mylibrary can see the functions from library1 and library2, consumers > of mylibrary cannot. So I end up manually having to go to all my > consumer files and changing them to: > (ns a-random-file-that-consumes-my-library > (:use library1) > (:use library2)) > > Blech. This makes it very difficult to refactor. What am I missing? > > On a related note, another thing I'm missing from Python is that in > mylibrary.py, when I say "from library1 import *", Python > automatically knows to look in the same directory. This keeps the > import declarations nice and short for a group of related files, and > more importantly, they don't break if I rename the directory they are > in or move them around. > > On the other hand, I'm finding in Clojure that I need to explicitly > name the directory as part of the namespace, and I'm finding this to > be a nuisance. Is there any way to make this a bit more pleasant? > > Thanks. > > -- > 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