Bedingte Ausdrücke

Mit bedingten Ausdrücken können Fallunterscheidungen formuliert werden:

if - für einfache wenn-dann-sonst Fallunterscheidungen
cond - für mehrfache Fallunterscheidungen
and - testet der Reihe nach und bricht ab bei nil
or - testet der Reihe nach und bricht ab bei nicht-nil

Die Funktion if erwartet drei Argumente. If wertet ihr erstes Argument aus. Wenn der sich ergebende Wert ungleich nil ist, wird auch das zweite Argument ausgewertet, ansonsten das dritte.

Ein Cond-Ausdruck hat im allgemeinen folgende Struktur:

(cond
  (expr-11 [expr-12])
  (expr-21 [expr-22])
  ...
  (expr-n1 [expr-n2])).

Die eckigen Klammern sollen versinnbildlichen, dass die eingeschlossenen Ausdrücke expr-12, expr-22, ..., expr-n2 optional sind. Die Auswertung eines Cond-Ausdrucks erfolgt so, dass zunächst expr-11 ausgewertet wird. Wenn sich der Wert nil ergibt, wird expr-21 ausgewertet usw. Wenn auch expr-n1 den Wert nil ergibt, ist der Wert des gesamten Cond-Ausdrucks nil. Wenn ein expr-i1 einen Wert ungleich nil ergibt, ist das der Wert des gesamten Cond-Ausdrucks, wenn der optionale Teil expr-i2 fehlt. Ansonsten wird expr-i2 ausgewertet und das Resultat dieser Auswertung ist das Resultat des gesamten Ausdrucks.

Das Prädikat and liefert die Und-Verknüfung mehrerer Ausdrücke, indem die Ausdrücke von links nach rechts ausgewertet werden, bis eine Auswertung den Wert nil ergibt oder keine Ausdrücke übrig sind. Der Wert des gesamten And-Ausdrucks ist der Wert des letzten ausgewerteten Teilausdrucks.

Das Prädikat or verknüpft mehrere Ausdrücke mit oder, indem die Ausdrücke von links nach rechs ausgewertet werden, bis eine Auswertung einen Wert ungleich nil ergibt oder keine Ausdrücke übrig sind. Der Wert des gesamten Or-Ausdrucks ist der Wert des letzten ausgewerteten Teilausdrucks.