clojure requer lógica de sintaxe
Estou tendo dificuldade em entender (e, portanto, lembrar) que o clojure requer a sintaxe descrita aqui:http://clojuredocs.org/clojure_core/1.3.0/clojure.core/require. Parece tanto contra intuitivo quanto não uniforme.
Por exemplo, no seguinte, por que esse vetor precisa ser citado:
(require '[clj-json.core :as json])
Contra intuitivo porque normalmente os vetores não são citados em clojure (listas são citadas e vetores são tratados como dados).
E não uniforme porque neste caso o vetor NÃO é citado:
(ns xxx
(:require [clj-json.core :as json]))
Eu percebo que a função require e o:require
o uso dentro da macro ns é apenas opticamente semelhante, mas ainda assim.
Há outras peças de estranheza também, por exemplo, eu posso fazer isso:
(require '(clj-json.core))
Mas eu não posso fazer isso:
(require '(clj-json.core :as json))
Alguém pode responder a estas perguntas:
No primeiro exemplo, por que o vetor precisa ser citado?Por que não precisa ser citado na macro ns?por que a notação de lista não permite:as
?Eu estou querendo saber se há razões pelas quais as coisas são como são, ou se a inconsistência não foi notada em tempo de design.