Fachkonzept: Fallunterscheidungen
Die allgemeine Fallunterscheidung
Eine allgemeine Fallunterscheidung wird in Racket mit einem
(cond ...)
-Ausdruck umgesetzt.
Dieser enthält beliebig viele Fälle,
die jeweils aus einer Bedingung (ein Ausdruck mit booleschem Rückgabewert) und einem zugehörigen Rückgabewert bestehen.
Wenn die Bedingung #t
ergibt, wird der zugehörige Rückgabewert als Ergebnis der Funktion zurückgegeben.
Wenn nicht sichergestellt werden kann, dass mindestens eine der Bedingungen zu #t
ausgewertet wird,
muss ein else
-Fall hinzugefügt werden.
(cond
([FunktionMitBoolscherRückgabe Operand-en] rückgabe-WennBedingung-#t)
([...] ...)
...
(else rückgabe-WennAlleBedingungen-#f)
)
Die binäre Fallunterscheidung
Eine binäre Fallunterscheidung wird in Racket mit einem
(if ...)
-Ausdruck umgesetzt.
Dieser enthält eine Bedingung (ein Ausdruck mit booleschem Rückgabewert) und zwei mögliche Rückgabewerte.
Wenn die Bedingung #t
ergibt, wird der erste Rückgabewert als Ergebnis der Funktion zurückgegeben,
wenn die Bedingung #f
ergibt, der zweite.
(if [FunktionMitBoolscherRückgabe Operand-en] rückgabe-#t rückgabe-#f)
Ausdruck mit booleschem Rückgabewert - genau genommen
Da Ausdrücke entweder zu Werten ausgewertet werde oder aber direkt Werte sind, kann man anstelle eines Ausdrucks mit booleschem Rückgabewert theoretisch auch direkt boolesche Werte nutzen. Für eine binäre Fallunterscheidung ergäben sich somit die Möglichkeiten:(if #t rückgabe-#t rückgabe-#f)
(if #f rückgabe-#t rückgabe-#f)
Ersteres würde immer zu rückgabe-t
auswerten, zweiteres immer
zu rückgabe-f
.