Over the last weeks, two additions to clojure.core broke several of  
my library modules by introducing names into the clojure.core  
namespace that I was using in my libraries as well. While this kind  
of problem is acceptable in a pre-release development period, I don't  
expect it to go away with release 1.0, so I believe we need to do  
something about it.

Basically, the problem concerns access to other namespaces via :use  
or :refer, though in practice it is most important for clojure.core  
that is referred to by default in any namespace. A symbol that refers  
to a var from another namespace cannot be redefined. If I introduce a  
symbol in my namespace and in a later release the same symbol is  
defined in a namespace that mine refers to, I can no longer compiler  
my namespace.

For namespaces other than clojure.core, an acceptable solution is to  
use the :only keyword in the :use clause of the ns macro. This just  
requires a bit more work in typing, but I don't see any other  
potential difficulty. I am currently converting all my code to  
use :only, and I haven't had any bad surprises until now. For  
clojure.core, listing all imported symbols explicitly would be a real  
pain, but I don't see any other simple solution. I just hope someone  
else does :-)

Konrad.

--~--~---------~--~----~------------~-------~--~----~
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
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to