domingo, 6 de octubre de 2013

Importar librerias en clojure


Clojure se organiza en namespaces que son similares a los paquetes de java.
Tenemos diferentes formas de importar librerías o paquetes:
  • Require, de esta forma le indicamos a Clojure que necesitamos una librería  Clojure va a verificar que esta este en el classpath, se usa de la siguiente manera: 
(require 'com.mi.libreria)
  • Refer, con refer hacemos es que no tengamos que escribir todo el nombre de la librería. Solo usamos las funciones que fueron importadas. Lo que hacemos con refer es referenciar un namespace, creando mapeos para todos los nombres al actual namespace:
(refer 'com.mi.libreria)
  • Use, es la aplicación de los 2 anteriores, Clojure se fija que la librería este en el classpath y también no es necesario escribir el nombre librería al llamar una función. Use tiene una bandera llamada reload, con la que le decimos que si importo ya una librería  que la recargue si esta librería tuvo un cambio, se actualizara.
(use 'com.mi.libreria)

Veamos un ejemplo:
(use 'examples.introduction)
->nil
(take 10 fibs)
->(0 1 1 2 3 5 8 13 21 34)