clojure Tutorial
Empezando con clojure
Buscar..
Observaciones
Clojure es un lenguaje de programación de propósito general de tipo dinámico con la sintaxis de Lisp.
Sus características admiten el estilo funcional de programación con funciones de primera clase y valores inmutables de forma predeterminada. El uso de variables reasignables no es tan fácil en Clojure como en muchos idiomas convencionales, ya que las variables deben crearse y actualizarse como objetos contenedores. Esto fomenta el uso de valores puros que permanecerán como estaban en el momento en que fueron vistos por última vez. Por lo general, esto hace que el código sea mucho más predecible, verificable y con capacidad de concurrencia. Esto también funciona para las colecciones, ya que las estructuras de datos integradas de Clojure son persistentes.
Para el rendimiento, Clojure admite sugerencias de tipo para eliminar la reflexión innecesaria cuando sea posible. Además, se pueden realizar grupos de cambios en las colecciones persistentes en versiones transitorias , lo que reduce la cantidad de objetos involucrados. Esto no es necesario la mayoría del tiempo, ya que las colecciones persistentes se copian rápidamente ya que comparten la mayoría de sus datos. Sus garantías de desempeño no están lejos de sus contrapartes mutables.
Entre otras características, Clojure también tiene:
- memoria transaccional de software (STM)
- varias primitivas de concurrencia que no implican bloqueo manual (átomo, agente)
- transformadores de secuencia composable (transductores),
- Instalaciones funcionales de manipulación de árboles (cremalleras).
Debido a su sintaxis simple y alta extensibilidad (a través de macros, implementación de interfaces centrales y reflexión), algunas características del lenguaje que se ven comúnmente se pueden agregar a Clojure con las bibliotecas. Por ejemplo, core.typed
trae un verificador de tipo estático, core.async
trae mecanismos de concurrencia simples basados en canales, core.logic
trae programación lógica.
Diseñado como un lenguaje alojado, puede interoperar con la plataforma en la que se ejecuta. Si bien el objetivo principal es JVM y todo el ecosistema detrás de Java, también se pueden ejecutar implementaciones alternativas en otros entornos, como ClojureCLR ejecutándose en Common Language Runtime o ClojureScript ejecutándose en tiempos de ejecución de JavaScript (incluidos los navegadores web). Si bien las implementaciones alternativas pueden carecer de algunas de las funcionalidades de la versión JVM, todavía se consideran una familia de idiomas.
Versiones
Versión | Registro de cambios | Fecha de lanzamiento |
---|---|---|
1.8 | Último registro de cambios | 2016-01-19 |
1.7 | Cambio de registro 1.7 | 2015-06-30 |
1.6 | Cambio de registro 1.6 | 2014-03-25 |
1.5.1 | Cambio de registro 1.5.1 | 2013-03-10 |
1.4 | Registro de cambios 1.4 | 15/04/2012 |
1.3 | Registro de cambios 1.3 | 2011-09-23 |
1.2.1 | 2011-03-25 | |
1.2 | 2010-08-19 | |
1.1 | 2010-01-04 | |
1.0 | 2009-05-04 |
Instalación y configuración
Opción 1: Leiningen
Requiere JDK 6 o más nuevo.
La forma más fácil de comenzar con Clojure es descargar e instalar Leiningen, la herramienta estándar de facto para administrar proyectos de Clojure, y luego ejecutar el lein repl
para abrir un REPL .
Linux
curl https://raw.githubusercontent.com/technomancy/leiningen/stable/bin/lein > ~/bin/lein export PATH=$PATH:~/bin chmod 755 ~/bin/lein
OS X
Siga los pasos de Linux anteriores o instale con los administradores de paquetes macOS.
Instalar con Homebrew
brew install leiningen
Instalar con MacPorts
Primero instala Clojure
sudo port -R install clojure
Instala Leiningen
, una herramienta de compilación para Clojure
sudo port -R install leiningen
lein self-install
Windows
Consulte la documentación oficial .
Opción 2: Distribución oficial
Requiere JRE 6 o más nuevo.
Las versiones de Clojure se publican como archivos JAR simples que se ejecutan en la JVM. Esto es lo que sucede típicamente dentro de las herramientas de construcción de Clojure.
Vaya a http://clojure.org y descargue el último archivo de Clojure
Extraiga el archivo ZIP descargado en un directorio de su elección
Ejecute
java -cp clojure-1.8.0.jar clojure.main
en ese directorioPuede que tenga que sustituir el
clojure-1.8.0.jar
en ese comando por el nombre del archivo JAR que realmente descargó.Para una mejor experiencia de REPL en la línea de comandos (por ejemplo,
rlwrap
los comandos anteriores), es posible que desee instalarrlwrap
:rlwrap java -cp clojure-1.8.0.jar clojure.main
Opción 3: Arranque
Requiere JDK 7 o más nuevo.
Boot es una herramienta de compilación Clojure de usos múltiples. Comprenderlo requiere cierto conocimiento de Clojure, por lo que puede que no sea la mejor opción para los principiantes. Consulte el sitio web (haga clic en Comenzar allí) para obtener instrucciones de instalación.
Una vez que esté instalado y en su PATH
, puede ejecutar boot repl
cualquier lugar para iniciar un Clojure REPL.
"¡Hola Mundo!" en el REPL
La comunidad de Clojure pone un gran énfasis en el desarrollo interactivo, por lo que una gran cantidad de interacción con Clojure ocurre dentro de un REPL (read-eval-print-loop) . Cuando ingresas una expresión en ella, Clojure la lee , la evalúa e imprime el resultado de la evaluación, todo en un bucle .
Ya deberías poder lanzar un Clojure REPL. Si no sabe cómo hacerlo, siga las instrucciones de instalación y configuración de este tema. Una vez que lo tienes funcionando, escribe lo siguiente en él:
(println "Hello, world!")
Luego presiona Enter . Esto debería imprimir Hello, world!
, seguido del valor de retorno de esta expresión, nil
.
Si desea ejecutar un poco de clojure al instante, intente REPL en línea. Por ejemplo http://www.tryclj.com/ .
Crear una nueva aplicación
Después de seguir las instrucciones anteriores e instalar Leiningen, inicie un nuevo proyecto ejecutando:
lein new <project-name>
Esto configurará un proyecto de Clojure con la plantilla de Leiningen predeterminada dentro de la carpeta <project-name>
. Hay varias plantillas para Leiningen, que afectan la estructura del proyecto. Más comúnmente es la plantilla "aplicación" utilizada, que agrega una función principal y prepara el proyecto para ser empaquetado en un archivo jar (cuya función principal es el punto de entrada de la aplicación). Esto se puede lograr con esto ejecutando:
lein new app <project-name>
Suponiendo que utilizó la plantilla de la aplicación para crear una nueva aplicación, puede probar que todo se configuró correctamente, ingresando al directorio creado y ejecutando la aplicación usando:
lein run
Si ves Hello, World!
en su consola, está todo listo y listo para comenzar a construir su aplicación.
Puede empaquetar esta sencilla aplicación en dos archivos jar con el siguiente comando:
lein uberjar
"¡Hola Mundo!" usando Boot
Nota: necesitas instalar Boot antes de probar este ejemplo. Consulte la sección Instalación y configuración si aún no lo ha instalado.
Boot permite crear archivos ejecutables de Clojure utilizando la línea shebang (#!). Coloque el siguiente texto en un archivo de su elección (este ejemplo asume que está en el "directorio de trabajo actual" y se llama hello.clj
).
#!/usr/bin/env boot
(defn -main [& args]
(println "Hello, world!"))
Luego chmod +x hello.clj
como ejecutable (si corresponde, normalmente ejecutando chmod +x hello.clj
).
... y ejecutarlo ( ./hello.clj
).
El programa debe mostrar "¡Hola, mundo!" y acaba.
Crear una nueva aplicación (con arranque)
boot -d seancorfield/boot-new new -t app -n <appname>
Este comando le dirá a boot que tome la tarea boot-new
desde https://github.com/seancorfield/boot-new y ejecute la tarea con la plantilla de la app
(vea el enlace para otras plantillas). La tarea creará un nuevo directorio llamado <appname>
con una estructura de aplicación típica de Clojure. Consulte el archivo README generado para obtener más información.
Para ejecutar la aplicación: boot run
. Otros comandos se especifican en build.boot
y se describen en README.