
Código como datos
Lo más notable que puede notar al llegar a Clojure desde Java es que es homoicónicolo que significa que el código está escrito en forma de estructuras de datos del lenguaje. Esta práctica, también conocida como código como datosda como resultado una sintaxis muy consistente con una cantidad limitada de palabras clave y construcciones. También crea un modelo de metaprogramación utilizando plantillas de código «conscientes de la sintaxis» (llamadas macros).
La idea es que cualquier fragmento de código Clojure sea también una instancia de datos de Clojure. Verá esto con mayor frecuencia en la sintaxis de la lista, porque la mayor parte de Clojure está escrito como listas. Aquí hay una función simple «Hola, InfoWorld» en Clojure:
(defn hello-infoworld ()
(println "Hello, InfoWorld"))
Los paréntesis indican una lista en Clojure. Entonces, la definición de esta función es esencialmente solo la definición de una lista con una palabra clave (defn), un nombre de función (hello-infoworld), un vector de argumento vacío (()) y el cuerpo de la función. El cuerpo de la función también es una lista que contiene una llamada a la función (println) y el argumento de esa función (“Hello, InfoWorld”).




