Alle vom Byte-Compiler erreichbaren Makros werden beim Übersetzen erweitert. "Erreichbar" bedeutet im Wesentlichen, nicht zitiert zu werden.
Der Körper von defun
s, defmacro
s, lambda
s wird alle bytegemischt, wenn die Quelldatei, die sie enthält, bytegemischt wird. Also ja, jedes Makro in ihnen wird erweitert, solange sie nicht in einem Anführungszeichen ( '
) enthalten sind. Ein sehr häufiger Fehler besteht darin, lambda
s in ein Zitat zu setzen. Aus diesem Grund sollten Sie niemals Ihr lambda
s zitieren .
Dies ist einer der großen Vorteile von Makros. Solange sie gut geschrieben sind, haben sie keinen Einfluss auf die Laufzeitleistung. Der andere Vorteil ist natürlich ihre Kraft und Vielseitigkeit. Der Nachteil ist, dass Sie die Syntax manipulieren und nicht Objekte. Es gibt also viel Raum für Probleme, manche unerwartet, andere unvermeidlich.