我对Clojure比较新,但我注意到很多项目实现了一个“核心”命名空间;例如foobar.core
似乎是一种非常常见的模式。这背后的历史是什么?为什么它是事实上的标准?
答案 0 :(得分:2)
它只是一个通用名称,代表某些东西的“核心”功能。 Clojure的核心功能本身定义了一种通用编程语言,在许多不同的问题域中可能需要非常通用的函数。仅适用于特定问题域的函数会进入特定于域的命名空间,例如clojure.string
或clojure.set
。
像Leiningen这样的工具无法知道您尝试编写的程序是什么类型,因此默认情况下,它们为foo/core
命名空间设置了clojure.core
- { {1}}是Clojure的核心功能,所以foo.core是foo的核心功能。
如果您可以为您的核心命名空间赋予一个不太通用的名称,或者只是使用clojure.core
启动引导(例如通过持有foo/core
功能),那么鼓励这样做,以便您的大部分名称代码将驻留在更具语义意义的命名空间中。这有助于您找到以后要使用的特定代码。