Gödel, Escher, Elisp: la belleza de las macros
Gödel, Escher, Elisp: The Beauty of Macros

En Emacs Lisp, el código es dato: una propiedad homoicónica que difumina la frontera entre programa y estructura de datos. Este artículo explora qué son realmente las macros, cómo se expanden en tiempo de compilación y por qué están en todas partes, desde `when` hasta `defun`. Con referencias a Hofstadter y Escher, muestra cómo las macros permiten extender el lenguaje y reescribir el código sobre la marcha, y ofrece herramientas como `macroexpand` y `macrostep` para ver la magia en acción.
Una macro es una forma especial que tienes permitido escribir tú mismo, con la condición de que tiene que compilarse hasta las formas reales.
- meken
> Para anticipar una pregunta común: ¿por qué mi-unless no podría ser una función? Los argumentos de una función se evalúan con avidez, antes de que la función los vea.
Interesante, así que si usas un lenguaje perezoso no necesitas una macro aquí y podrías escribir mi-unless como una función.
- kimi
Recuerda la regla de oro de las macros de Lisp: no escribas una macro.
- anthk
The Computational Beauty of Nature es similar y tiene el código del libro ahí:
Algunas herramientas pueden hacer fallar X bajo CWM para OpenBSD, cambia a FVWM o usa alguna herramienta como mimalloc.
On Lisp, el libro básicamente construye enteros basados en conses, algo así como los Axiomas de Peano.