2.2. Common Lisp

2.2.1. Praxis mit der REPL

Nach dem Start von Common Lisp in emacs (Tastenkombination: <C-x C-l>) erhält man in etwa das folgende Bild (die Versionsnummer von SLIME in der ersten Zeile kann natürlich abweichen):

; SLIME 2.20
CL-USER>

Hinter dem CL-USER&gt; (dem Prompt) befindet sich eine blinkende Eingabemarke (englisch 'Cursor'), die signalisiert, dass das System bereit ist und auf eine Eingabe wartet.

Die Arbeit mit dem Programm besteht im Prinzip aus dem immer gleichen Ablauf von vier Schritten, die sich permanent wiederholen:

  • Man gibt einen Ausdruck ein und schliesst die Eingabe mit der Eingabetaste (Return) ab. Das Programm liest diese Eingabe (Read).
  • Der Ausdruck wird vom Programm ausgewertet (Eval).
  • Das Programm druckt ein Ergebnis (Rückgabewert) aus (Print).
  • Anschliessend druckt das Programm das Prompt auf einer neuen Zeile aus und signalisiert damit, dass es für eine erneute Eingabe bereit ist und der Ablauf beginnt von vorne (Loop).

Dieser Vorgang ist so typisch für alle Lisp-ähnlichen Sprachen, dass sich dafür der Begriff REPL ausgeprägt hat und sich sich aus den Anfangsbuchstaben der einzelnen Schritte zusammensetzt: Read-Eval-Print-Loop. Es hat sich eingebürgert, den ganzen Buffer, in dem dieser Vorgang stattfindet, auch als die REPL zu bezeichnen.

Hierzu einige Beispiele von Eingaben und der Antworten des Programms:

CL-USER> 4
4
CL-USER> 20
20
CL-USER> 2.5
2.5
CL-USER> "hallo"
"hallo"
CL-USER> 'Ein-Symbol
EIN-SYMBOL
CL-USER>

In den Beispielen fällt auf, dass das Programm bei fast allen Eingaben die Eingabe unverändert wieder ausdruckt. Lediglich im letzten Beispiel fehlt das einfache Anführungszeichen (Apostroph) vor Ein-Symbol.1

Im Normalfall haben alle Ausdrücke, die von Lisp verarbeitet werden, einen Wert und dieser Wert wird in der Printphase der REPL vom Programm zurückgeliefert.

In den Beispielen oben wurden als 'Datentypen' Zahlen, Zeichenketten und Symbolnamen verwendet. Diese Datentypen haben die Eigenschaft, zu sich selbst zu evaluieren. Man kann daher auch sagen: „Der Wert von 4 ist 4“ bzw. „der Wert von "Hallo" ist "Hallo"“.

Daten(typen), die zu sich selbst evaluieren, werden in Lisp Sprachen Atome genannt.

Alternativ zur Evaluation im Buffer der REPL kann man mit Emacs Ausdrücke in Lisp Textdateien direkt evaluieren. Dazu öffnet man eine Datei mit einem Dateinamen, der mit ".lisp" endet.

Ein Ausdruck in dieser Datei wird evaluiert, indem man den Cursor hinter das letzte Zeichen des Ausdrucks positioniert und dann die Tastenkombination <C-x C-e> ausführt. Wenn das Ergebnis in eine Zeile passt, wird es im selben Fenster in der Zeile am unteren Fensterrand, dem 'Minibuffer' ausgegeben. Andernfalls wird das Ergebnis im REPL Buffer ausgegeben.

Man kann auch einen Ausdruck mit der Tastenkombination <C-c C-c> 'kompilieren'. Hierbei ist es nicht erforderlich, den Cursor auf das Ende des Ausdrucks zu positionieren. Der Cursor muss sich lediglich irgendwo innerhalb der äußeren Klammern des Ausdrucks befinden. Mit der Tastenkombination <C-c C-c> wird immer der gesamte Ausdruck um den Cursor bis zum obersten Klammerebene, dem 'Toplevel' kompiliert.

1: Zur speziellen Rolle des einfachen Anführungszeichens vor Lisp Ausdrücken siehe die Erläuterungen unter Evaluation\/Quotierung in Kapitel 2.2.4. In dem gegebenen Beispiel dient das Apostroph dazu, den Symbol’namen' zu bezeichnen und nicht den Symbol’wert'.

results matching ""

    No results matching ""