# Lisp ## Variablen ### Globale Variablen #### defparameter **`defparameter`**: Definiert eine globale Variable und weist ihr sofort einen Wert zu. Ein erneutes Laden überschreibt den Wert. ```lisp (defparameter *Variable* Wert) ``` **Beispiel** ```lisp (defparamter *a* 10) defparameter *name* "Otto") (+ *a* *b*) ``` #### defvar **`defvar`**: Definiert eine globale Variable, setzt den Anfangswert aber nur, wenn sie noch keinen Wert hat. Überschreibt bestehende Werte beim Neuladen *nicht*. ```lisp (defvar *Variable* Wert ) ``` Beispiel ```lisp (defvar *b* 101) ``` #### setq / setf **`setq` / `setf`**: Ändert den Wert einer bereits existierenden Variablen oder erzeugt (in manchen Lisp-Dialekten) implizit eine globale Variable, was jedoch unsauber ist. `setf` ist der universelle Zuweisungsoperator. `setq` - einfache Variablenzuweisung setf - allgemeine Zuweisung `setf` kann nicht nur Variablen setzen, sondern praktisch alles, wofür Lisp eine passende **Schreibstelle (place)** kennt: (setf *mein-wert* 100) ### Lokale Variablen https://www.heise.de/blog/Lisp-lernen-Teil-1-Primzahlen-berechnen-3077388.html https://gigamonkeys.com/book/ https://portacle.github.io/#get-mac https://github.com/rabbibotton/clog https://docs.google.com/presentation/d/16egmnPGA88RVOl0zhurxw6uLnA86v-lBe_SHZA7CWOg/edit?slide=id.gd400d95397ceaa_18#slide=id.gd400d95397ceaa_18