Todas las macros accesibles por el compilador de bytes se expanden durante la compilación. "Alcanzable" significa esencialmente no ser citado.
El cuerpo de defun
s, defmacro
s, lambda
s se compila en bytes cuando el archivo fuente que los contiene se compila en bytes. Entonces, sí, cualquier macro dentro de ellas se expandirá, siempre que no estén dentro de una cita ( '
). Un error muy común es envolver lambda
s en una cita y, de hecho, es por eso que nuncalambda
debes citar tus s .
Esta es una de las grandes ventajas de las macros, siempre y cuando estén bien escritas, no tengan impacto en el rendimiento del tiempo de ejecución. La otra ventaja es su poder y versatilidad, por supuesto. La desventaja es que está manipulando la sintaxis, no los objetos, por lo que hay mucho espacio para problemas, algunos inesperados, otros inevitables.