(fn [x] (+ x 5))
y #(+ % 5)
- Estos dos son completamente equivalentes, éste simplemente utiliza el dispatch macro para hacer el código un poco más concisa. Para funciones cortas, generalmente se prefiere la sintaxis #()
y la sintaxis (fn [x])
es mejor para funciones que son un poco más largas. Además, si ha anidado funciones anónimas, no puede usar #()
para ambos debido a la ambigüedad que esto causaría.
(fn add-five [x] (+ x 5))
- es lo mismo que los dos anteriores, excepto que tiene un nombre: add-five. Esto a veces puede ser útil, como si necesita hacer una llamada recursiva a su función. *
(partial + 5)
- En clojure, +
es una función variadica. Esto significa que puede aceptar cualquier cantidad de argumentos. (+ 1 2)
y (+ 1 2 3 4 5 6)
son ambos formularios perfectamente válidos. partial
está creando una nueva función que es idéntica a +
, excepto que el primer argumento es siempre 5. Debido a esto, ((partial + 5) 3 3 3)
es válido. No podría usar los otros formularios en este caso.
* Al hacer una llamada recursiva desde la posición de cola, debe usar recur
, sin embargo, esto no siempre es posible.