62 lines
1.4 KiB
Markdown
62 lines
1.4 KiB
Markdown
# 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 |