Cómo usar defmacro en Clojure – Resuelto

En Clojure, defmacro se utiliza para definir macros. Las macros en Clojure permiten manipular código a nivel de sintaxis, permitiendo crear nuevas construcciones que pueden ser más expresivas o más eficientes que las construcciones estándar del lenguaje.

Uso básico de defmacro

Podemos definir una macro usando defmacro. Aquí tenemos un ejemplo sencillo de una macro que intercambia dos valores:

(defmacro swap [a b] `(let [tmp# ~a] (set! ~a ~b) (set! ~b tmp#)))

En este ejemplo, la macro swap genera código para intercambiar dos valores.

Usar macros en el código

Podemos usar la macro swap de la siguiente manera:

(def x 5) (def y 10) (swap x y) [x y] ;; [10 5]