Lisp

Lisp ist eine funktionale Programmiersprache.


Syntax

Die Syntax von Lisp ist im Gegensatz zu der anderer Programmiersprachen sehr einfach.

Es gibt textuelle Darstellungen der Datentypen:

Zahl,
Zeichenkette,
Symbol und
Liste.


Beispiele:

5.234
"Dies ist eine Zeichenkette."
dies-ist-ein-symbol
(dies ist eine liste "mit" 7 Elementen)
nil
()

Alle Strukturen, die man aus Zahlen, Zeichenketten, Symbolen und Listen aufbauen kann, nennt man S-Expressions ("Symbolic Expressions").

Damit ist die Syntax von Lisp im Großen und Ganzen beschrieben.


Auswertung

Der Wert von Zahlen und Zeichenketten ist jeweils die Zahl oder Zeichenkette selbst.

Der Wert eines Symbols ist diesem in einer Umgebung (Environment) zugeordnet, oder nicht. Der Versuch, den Wert eines ungebundenen Symbols zu bestimmen, löst eine Ausnahme aus.

Der Wert der leeren Liste nil ist wiederum die leere Liste. Anderenfalls wird der Wert des ersten Listenelements bestimmt, dieser Wert muss eine Funktion sein. Abhängig von der Funktion werden die weiteren Elemente der Liste ausgewertet oder nicht ausgewertet als Argumente an die Funktion übergeben. Der Wert der gesamten Liste ergibt sich als Wert der Funktionsanwendung auf die Argumente.

> (+ 2 3 4)
9

Hier ist das Symbol + an eine Funktion gebunden, die die ausgewerteten restlichen Elemente der Liste summiert.