clojure requiere razon de sintaxis
Me cuesta entender (y, por tanto, recordar) que el clojure requiere la sintaxis que se describe aquí:http://clojuredocs.org/clojure_core/1.3.0/clojure.core/require. Parece tanto contra intuitivo como no uniforme.
Por ejemplo, en el siguiente por qué es necesario citar este vector:
(require '[clj-json.core :as json])
Contador intuitivo porque normalmente los vectores no se citan en clojure (las listas se citan y los vectores se tratan como datos).
Y no uniforme porque en este caso el vector NO se cita:
(ns xxx
(:require [clj-json.core :as json]))
Me doy cuenta de que la función requiere y la:require
El uso dentro de la macro ns solo es ópticamente similar, pero aún así.
También hay otras piezas de rareza, por ejemplo, puedo hacer esto:
(require '(clj-json.core))
Pero no puedo hacer esto:
(require '(clj-json.core :as json))
Alguien puede responder estas preguntas:
en el primer ejemplo, ¿por qué es necesario citar el vector?¿Por qué no necesita ser citado en la macro ns?¿Por qué la notación de lista no permite:as
?Me pregunto si hay razones por las que las cosas son como son o si la inconsistencia no se notó en el momento del diseño.