24

我在几个地方读到了 clojure 中不鼓励使用单段命名空间。

事实上,我见过的几乎每个库都有 (require 'lib.core) 而不是 (require 'lib)。

为什么?


编辑:我有点傻。对于单个段命名空间可能是一件坏事的简明示例,将给予额外的奖励。

4

2 回答 2

26

Java 不鼓励使用默认包,因为您不能从任何其他包中引用其中的任何内容。如果您预编译一个单段 Clojure 命名空间,您将在默认包中获得一个 Java 类。如果任何人在任何时候都想从 Java 中使用你的库,他会被这种琐碎的事情阻止得死去活来。由于没有充分的理由支持使用单段命名空间,并且有一个明确的理由不这样做,因此可以公平地说,在 Clojure 中不鼓励使用单段命名空间。

于 2012-11-26T15:42:40.930 回答
9

单段命名空间存在 Java 互操作问题。有些事情可能会以意想不到的方式破裂。另请参阅https://groups.google.com/forum/?fromgroups=#!topic/clojure/gOffhotk25Y

于 2012-11-26T14:44:46.820 回答