Ho difficoltà a capire (e quindi ricordare) che il clojure richiede la sintassi qui descritta: http://clojuredocs.org/clojure_core/1.3.0/clojure.core/require. Sembra sia contro intuitivo che non uniforme.clojure richiede la logica della sintassi
Per esempio, nel seguito perché è questo vettore a cui devono essere citato:
(require '[clj-json.core :as json])
contro intuitivo perché normalmente i vettori non sono quotati in clojure (liste sono citati e vettori sono trattati come dati).
E non uniforme, perché in questo caso il vettore è non quotate:
(ns xxx
(:require [clj-json.core :as json]))
mi rendo conto che la funzione di richiedere e l'utilizzo :require
all'interno della macro ns sono solo visivamente simili, ma ancora.
Ci sono altri pezzi di stranezze così, per esempio posso fare questo:
(require '(clj-json.core))
Ma non posso fare questo:
(require '(clj-json.core :as json))
Qualcuno può rispondere a queste domande:
- nel primo esempio perché il vettore deve essere quotato?
- perché non deve essere citato nella macro ns?
- perché la notazione elenco non consente
:as
?
Mi chiedo se ci sono motivi per cui le cose sono come sono o se l'incoerenza non è stata notata in fase di progettazione.
Partenza [questa discussione] (https://groups.google.com/forum/?fromgroups#!searchin/clojure-dev/ns$20macro/clojure-dev/6EEfdPhrWgk/qJALczHTzpkJ) sul clojure -della lista se non l'hai già visto. L'ho trovato abbastanza istruttivo. – Jeremy