Macros en Lisp: cómo escribir tus propias abstracciones

Fuentes: Macros: Defining Your Own

Este capítulo introduce la escritura de macros en Lisp, una herramienta que permite a los programadores crear sus propias abstracciones por encima del lenguaje y la biblioteca estándar. A diferencia de las funciones, las macros operan en tiempo de expansión del código: generan código que después será compilado y ejecutado, por lo que no pueden acceder a los datos que solo existen en tiempo de ejecución.

Para ilustrar esta diferencia, el texto recurre a una analogía narrativa: una compañía de programadores perezosos dejaba notas en el código; un asistente llamado Mac las traducía a código real. Con el tiempo, las notas adoptaron la forma de programas Lisp que generaban el código deseado, y Mac dejó de intervenir manualmente cuando el compilador aprendió a ejecutar él mismo esas definiciones. De esa abreviatura, "DEF. MAC. R/O", deriva el término DEFMACRO.

El capítulo subraya que el código que se ejecuta durante la expansión de macros trabaja en un entorno distinto al del programa en ejecución: solo dispone de la información presente en el código fuente, como las listas de Lisp que representan las formas, y no de valores asociados a variables en tiempo de ejecución. Esa distinción es la clave para entender qué pueden y qué no pueden hacer las macros, y prepara al lector para escribir las suyas propias.