Подтвердить что ты не робот

Что не так с пространством имен одного сегмента?

В нескольких местах я прочитал, что пространства имен с одним сегментом обескуражены в clojure.

Действительно, почти каждая библиотека, которую я видел, требует (требуется lib.core) вместо (require 'lib).

Почему?


Изменить: Я немного глуп. Дополнительный кредит будет предоставлен для краткого примера того, как пространство имен одного сегмента может быть плохой.

4b9b3361

Ответ 1

Java препятствует использованию пакета по умолчанию, потому что вы не можете ссылаться на что-либо в нем из любого другого пакета. Если вы предварительно скомпилируете односегментное пространство имен Clojure, вы получите класс Java в пакете по умолчанию. Если кто-либо в любое время захочет использовать вашу библиотеку с Java, он будет остановлен этой тривиальностью. Поскольку нет веских оснований для использования односегментного пространства имен, и есть эта четко определенная причина, не следует, справедливо сказать, что односегментные пространства имен должны быть обескураженной практикой в ​​Clojure.