Listen und Zitate

Listen werden verwendet, um verschachtelte Ausdrücke zu notieren. Listen müssen aber nicht immer ausgewertet werden. Unverarbeitet können sie als flexible Datenstrukturen dienen.

Wie notiert man eine Liste, die nicht ausgewertet werden soll? Dazu benutzt man die Funktion quote. Diese Funktion erwartet ein Argument und liefert es unausgewertet als Resultat. Der Wert von (quote (+ 2 3)) ist also nicht 5, sondern die Liste (+ 2 3).

Lisp hält viele Funktionen zur Verarbeitung von Listen bereit.

Mit der Funktion null? kann man prüfen, ob eine Liste keine Elemente enthält. Der Ausdruck (null? (quote (1 "be" "ce" 4))) ist nil und das steht für falsch, denn die Liste (1 "be" "ce" 4) ist nicht leer.

Die Funktion list? überprüft, ob ein Wert eine Liste ist. (list? (quote (1 "be" "ce" 4))) ist t und das steht für wahr, denn es handelt sich um eine Liste.

(first (quote (1 "be" "ce" 4))) ist 1, denn first liefert das erste Element einer Liste. (second (quote 1 "be" "ce" 4))) ist "be", denn second liefert das zweite Element einer Liste. Auch für den Zugriff auf die weiteren sieben Elemente einer Liste gibt es Funktionen mit naheliegenden Namen: third, forth, fifth, sixth, seventh, eight, ninth.

(rest (quote (1 "be" "ce" 4))) ist ("be" "ce" 4), denn rest liefert die restlichen Elemente einer Liste außer dem Ersten.

(last (quote (1 "be" "ce" 4))) ist (4), denn last liefert das letzte Element einer Liste als Liste. Die Funktion butlast gibt alle Elemente einer Liste zurück bis auf das Letzte: (butlast (quote (1 "be" "ce" 4))) ist (1 "be" "ce").

Mit der Funktion length wird ermittelt, wieviele Elemente eine Liste enthält. (length (quote (1 "be" "ce" 4))) ist 4, denn das ist die Länge der Liste.

Die Funktion select-if wendet ein Prädikat auf alle Elemente einer Liste an und liefert eine Liste mit denjenigen Elementen, für die das Prädikat den Wert wahr zurückgegeben hat. (select-if number? (quote (1 "be" "ce" 4))) ist (1 4), denn das sind die Elemente der Liste, für die number? seine Zustimmung signalisiert.

Die Funktion find-if wendet ein Prädikat auf alle Elemente einer Liste an und liefert das erste Element, für das das Prädikat den Wert wahr zurückgegeben hat. (find-if string? (quote (1 "be" "ce" 4))) ist "be", denn "be" ist das erste Element in der Liste für das string? den Wert t ergibt.

Im Anschluss findet sich ein Link auf eine Datei mit Beispielen, die mit dem Programm Calc ausgeführt werden können.


beispiele2.sheet.xml