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

Что такое:: используется для clojure?

Я понимаю ключевые слова в Clojure: ключевое слово. Но для чего: используется? Почему это похоже на привязку?

user=> :foo
:foo
user=> ::foo
:user/foo
4b9b3361

Ответ 1

Двойной двоеточие для полного определения ключевых слов с вашим текущим пространством имен. Это позволяет избежать конфликтов имен для ключевых слов, которые имеют смысл для разных библиотек. Без полноценных ключевых слов вы можете случайно перезаписать некоторые значения на карте и нарушить совместимость с библиотекой.

Ответ 2

Это недокументированный, но :: ключевые слова также могут использоваться для разрешения псевдонимов пространства имен. Например, ::foo/bar будет оценивать до :clojure.core/bar, если foo является псевдонимом clojure.core. Исключение чтения исключается, если foo не разрешает пространство имен.

Изменить: теперь это задокументировано