我已经在几个地方读过,在clojure中不鼓励使用单段名称空间。
事实上,我见过的几乎每个库都有(需要'lib.core)而不是(需要'lib)。
为什么?
编辑:我有点傻。对于单个段命名空间如何可能是坏事的简明示例,将给予额外的信任。
答案 0 :(得分:18)
Java不鼓励使用默认包,因为您无法从任何其他包中引用其中的任何内容。如果预编译一段Clojure命名空间,您将在默认包中获得一个Java类。如果有人在任何时候想要使用来自Java的库,那么他将被这种无足轻重的人所阻止。由于没有充分的理由支持使用单段命名空间,并且有一个明确定义的理由不这样做,可以公平地说单段命名空间应该是Clojure中的气馁实践。
答案 1 :(得分:7)
单段命名空间与Java互操作有问题。有些事情可能以意想不到的方式破裂另请参阅https://groups.google.com/forum/?fromgroups=#!topic/clojure/gOffhotk25Y