LISP - Macros

Las macros le permiten ampliar la sintaxis de LISP estándar.

Técnicamente, una macro es una función que toma una expresión-s como argumentos y devuelve una forma LISP, que luego se evalúa.

Definición de una macro

En LISP, una macro nombrada se define usando otra macro llamada defmacro. La sintaxis para definir una macro es:

(defmacro macro-name (parameter-list))
"Optional documentation string."
body-form

La definición de la macro consiste en el nombre de la macro, una lista de parámetros, una cadena de documentación opcional y un cuerpo de expresiones Lisp que define el trabajo que debe realizar la macro.

Ejemplo

Escribamos una macro simple llamada setTo10, que tomará un número y establecerá su valor en 10.

Cree un nuevo archivo de código fuente llamado main.lisp y escriba el siguiente código en él.

(defmacro setTo10(num)
(setq num 10)(print num))
(setq x 25)
(print x)
(setTo10 x)

Cuando hace clic en el botón Ejecutar, o escribe Ctrl + E, LISP lo ejecuta inmediatamente y el resultado devuelto es:

25
10