LISP - Makros

Mit Makros können Sie die Syntax von Standard-LISP erweitern.

Technisch gesehen ist ein Makro eine Funktion, die einen S-Ausdruck als Argumente verwendet und ein LISP-Formular zurückgibt, das dann ausgewertet wird.

Makro definieren

In LISP wird ein benanntes Makro mithilfe eines anderen benannten Makros definiert defmacro. Die Syntax zum Definieren eines Makros lautet -

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

Die Makrodefinition besteht aus dem Namen des Makros, einer Parameterliste, einer optionalen Dokumentationszeichenfolge und einer Reihe von Lisp-Ausdrücken, die den vom Makro auszuführenden Job definieren.

Beispiel

Schreiben wir ein einfaches Makro mit dem Namen setTo10, das eine Zahl annimmt und ihren Wert auf 10 setzt.

Erstellen Sie eine neue Quellcodedatei mit dem Namen main.lisp und geben Sie den folgenden Code ein.

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

Wenn Sie auf die Schaltfläche Ausführen klicken oder Strg + E eingeben, führt LISP diese sofort aus und das zurückgegebene Ergebnis lautet:

25
10