Tutorial: Clojure
Leiningen
Leiningen es una herramienta utilizada para manejar proyectos en Clojure. Sería como el equivalente de Maven para Clojure.
Tanto Clojure como Leiningen puede ser utilizados desde una IDE como IntelliJ IDEA o desde la consola.
IntelliJ IDEA
En IntelliJ IDEA es posible utilizar un plugin que instala automáticamente Clojure y Leiningen.
-
Abrir la pantalla de configuración de Plugins (desde la pantalla de inicio, o en Menu → Settings… → Plugins).
- Click en Marketplace
- Buscar el plugin Cursive
- Click en Install
- Cuando termine la instalación, reiniciar IntelliJ.
-
Al crear un nuevo proyecto, seleccionar Clojure y Leiningen, y click en Next. Luego completar los datos del proyecto (nombre, ubicación, etc.).
-
Cursive se puede probar por 30 días, y luego de ese período requiere la adquisición de una licencia. Se puede obtener una licencia gratuita para uso no comercial:
- Ir a https://cursive-ide.com/buy.html
- Elegir Non-Commercial licence
- Ingresar nombre y email.
- Se recibirá la licencia en la casilla de mail.
- En IntelliJ, ir a Menu → Help → Register Cursive…
- Copiar y pegar la licencia (el texto entre
BEGIN LICENCE
yEND LICENCE
inclusive).
Consola
-
Instalar Java, Clojure y Leiningen en el sistema. Las instrucciones de instalación dependen del sistema operativo (por ejemplo en Ubuntu se puede instalar con
apt install clojure leiningen
). Una vez instalados deberían estar disponibles los comandosclj
ylein
. -
Crear un nuevo proyecto con
lein new app <nombre>
. Este comando crea una carpeta con el nombre indicado y algunos archivos iniciales.my-app/ ├── CHANGELOG.md ├── doc │ └── intro.md ├── LICENSE ├── project.clj ├── README.md ├── resources ├── src │ └── my_app │ └── core.clj └── test └── my_app └── core_test.clj
Los próximos comandos asumen que estamos parados en la carpeta raíz del proyecto.
-
El punto de entrada del programa es la función
-main
definida en el archivocore.clj
. Para ejecutarlo:lein run
. -
Para iniciar un REPL desde donde podemos invocar cualquier función definida en nuestro código:
lein repl
.Por defecto el REPL solo importa los símbolos del archivo
core.clj
. Para importar otros archivos:(use '[<namespace>.<nombre-modulo>] :reload)
. Por ejemplo, si queremos cargar el archivosrc/my_app/math.clj
:(use '[my_app.math] :reload)
(dentro de ese archivo la primera línea debe ser(ns my_app.math)
). -
Para crear un archivo
jar
que se puede distribuir y ejecutar en cualquier otra computadora con la máquina virtual de Java:lein uberjar
. Luego ejecutarlo conjava -jar <nombre>.jar
.