Мне трудно понять (и, следовательно, запомнить) синтаксис clojure require, описанный здесь: http://clojuredocs.org/clojure_core/1.3.0/clojure.core /требовать. Это кажется одновременно нелогичным и неоднородным.
Например, в следующем, почему этот вектор должен быть заключен в кавычки:
(require '[clj-json.core :as json])
Нелогично, потому что обычно векторы не заключаются в кавычки в clojure (списки заключаются в кавычки, а векторы рассматриваются как данные).
И неоднородным, потому что в этом случае вектор НЕ заключен в кавычки:
(ns xxx
(:require [clj-json.core :as json]))
Я понимаю, что функция require и использование :require
внутри макроса ns только оптически похожи, но все же.
Есть и другие странности, например, я могу сделать это:
(require '(clj-json.core))
Но я не могу сделать это:
(require '(clj-json.core :as json))
Кто-нибудь может ответить на эти вопросы:
:as
?Мне интересно, есть ли причины, по которым все так, как есть, или это несоответствие просто не было замечено во время разработки.