clojure требует синтаксического обоснования
Мне трудно понять (и, следовательно, вспомнить) необходимость использования синтаксиса, описанного здесь:http://clojuredocs.org/clojure_core/1.3.0/clojure.core/require, Это кажется противоречивым и неоднородным.
Например, в следующем, почему этот вектор должен быть заключен в кавычки:
(require '[clj-json.core :as json])
Счетчик интуитивно понятен, потому что обычно векторы не заключаются в кавычки (списки заключаются в кавычки, а векторы обрабатываются как данные).
И неравномерно, потому что в этом случае вектор НЕ указан:
(ns xxx
(:require [clj-json.core :as json]))
Я понимаю, что требуется функция и:require
использование внутри макроса ns только оптически похоже, но все же.
Есть и другие странности, например, я могу сделать это:
(require '(clj-json.core))
Но я не могу сделать это:
(require '(clj-json.core :as json))
Может кто-нибудь ответить на эти вопросы:
in the first example why does the vector need to be quoted? why does it not need to be quoted in the ns macro? why does the list notation not allow:as
?
Мне интересно, есть ли причины, почему вещи такие, какие они есть, или если несоответствие просто не было замечено во время разработки.