Clojure erfordern Syntaxbegründung

Es fällt mir schwer, die hier beschriebene Syntax für die Clojure zu verstehen (und mich deshalb daran zu erinnern):http://clojuredocs.org/clojure_core/1.3.0/clojure.core/require. Es scheint sowohl kontraintuitiv als auch uneinheitlich zu sein.

Im Folgenden wird beispielsweise erläutert, warum dieser Vektor in Anführungszeichen gesetzt werden muss:

(require '[clj-json.core :as json])

Gegenteilig intuitiv, da Vektoren normalerweise nicht in clojure angegeben werden (Listen werden angegeben und Vektoren werden als Daten behandelt).

Und ungleichmäßig, weil in diesem Fall der Vektor NICHT zitiert wird:

(ns xxx 
    (:require [clj-json.core :as json]))

Mir ist klar, dass die Funktion und die Anforderung:require Die Verwendung innerhalb des ns-Makros ist nur optisch ähnlich, aber immer noch.

Es gibt auch andere seltsame Dinge, zum Beispiel kann ich das tun:

(require '(clj-json.core))

Das kann ich aber nicht:

(require '(clj-json.core :as json))

Kann jemand diese Fragen beantworten:

im ersten Beispiel, warum muss der Vektor in Anführungszeichen gesetzt werden?Warum muss es nicht im ns-Makro angegeben werden?Warum lässt die Listennotation nicht zu?:as?

Ich frage mich, ob es Gründe gibt, warum die Dinge so sind, wie sie sind, oder ob die Inkonsistenz zur Entwurfszeit einfach nicht bemerkt wurde.

Antworten auf die Frage(1)

Ihre Antwort auf die Frage