Was macht &aux in CLISP?

Antwort vom

**`&aux` deklariert in Common Lisp zusätzliche lokale Variablen in der Parameterliste; sie sind keine Argumente, sondern werden beim Funktionsaufruf intern gebunden und optional initialisiert.** ([lispworks.com](https://www.lispworks.com/documentation/HyperSpec/Body/26_glo_a.htm)) Beispiel: ```lisp (defun beispiel (x &optional y &aux (sum (+ x (or y 0))) (doppelt (* sum 2))) doppelt) ``` Hier gilt: - `x` und `y` kommen von außen als Argumente. - `sum` und `doppelt` kommen **nicht** von außen, sondern werden intern erzeugt. - Die `&aux`-Initialisierungen laufen der Reihe nach, praktisch wie ein kleines `let*`. Deshalb darf `doppelt` auf `sum` zugreifen. Das ist der entscheidende Unterschied zu normalen Parametern. ([lispworks.com](https://www.lispworks.com/documentation/HyperSpec/Body/03_d.htm)) Wichtig für CLISP: Das ist kein CLISP-Sonderfeature, sondern normales Common Lisp. Wenn du `&aux` in einer `defun`- oder `lambda`-Liste siehst, bedeutet es fast immer: „Hilfsvariablen direkt am Anfang der Funktion anlegen, statt extra ein `let` in den Body zu schreiben.“ CLISP führt das entsprechend dem Standard. ([lispworks.com](https://www.lispworks.com/documentation/HyperSpec/Body/03_d.htm)) Der praktische Nutzen ist vor allem Lesbarkeit bei kurzen Vorbereitungen. Für viel Logik ist ein separates `let` meist klarer; `&aux` lohnt sich eher für 1–3 einfache Hilfsbindungen direkt neben den Parametern. ([lispworks.com](https://www.lispworks.com/documentation/HyperSpec/Body/03_d.htm))

Kategorie: Technik Tags: CLISP Lambda Variablen

Verwandte Fragen

Wie prüfe ich in cmd.exe Variablen auf nachgestellte Leerzeichen?

In cmd.exe prüfst du trailing spaces am zuverlässigsten, indem du den Originalwert mit einer rechts getrimmten Variante vergleichst; direkte String-Prüfungen sind in Batch dafür un...