Cómo usar macros en Clojure – Resuelto

Las macros en Clojure permiten manipular el código de manera metaprogramática, es decir, crear funciones que transformen otras funciones antes de que sean evaluadas.

Definición de una macro

Una macro se define de forma similar a una función, pero usando defmacro:

(defmacro saludo [nombre] `(str "Hola, " ~nombre))

Uso de la macro

Cuando llamamos a la macro, el código es transformado antes de ser evaluado:

(saludo "Juan") ;; "Hola, Juan"