Estoy teniendo dificultades para entender (y por lo tanto recordar) el clojure requiere la sintaxis que se describe aquí: http://clojuredocs.org/clojure_core/1.3.0/clojure.core/require. Parece contradictorio y no uniforme.clojure requieren sintaxis razonamiento
Por ejemplo, en lo que sigue por qué es este vector requerido para ser citado:
(require '[clj-json.core :as json])
contra intuitivo porque normalmente los vectores no están expresados en clojure (listas se citan y vectores son tratados como datos).
Y no uniforme porque en este caso el vector no se cita:
(ns xxx
(:require [clj-json.core :as json]))
que se dan cuenta de que la función de requerir el uso y :require
dentro de la macro ns sólo son ópticamente similares, pero aún así.
Hay otras piezas de rarezas, así, por ejemplo, yo puedo hacer esto:
(require '(clj-json.core))
Pero no puedo hacer esto:
(require '(clj-json.core :as json))
Puede alguien responder a estas preguntas:
- en el primer ejemplo ¿por qué el vector debe ser cotizado?
- ¿por qué no necesita ser citado en la macro ns?
- ¿por qué la notación de la lista no permite
:as
?
Me pregunto si hay razones por las que las cosas son como son, o si la inconsistencia simplemente no se notó en el momento del diseño.
Salida [este hilo] (https://groups.google.com/forum/?fromgroups#!searchin/clojure-dev/ns$20macro/clojure-dev/6EEfdPhrWgk/qJALczHTzpkJ) en el clojure -dev list si aún no lo has visto. Lo encontré bastante informativo. – Jeremy