i

Fachkonzept - Musterabgleich

Einen Musterabgleich verwenden

Auch in dieser Situation wird der Eintrittspreis mit einer Fallunterscheidung beschrieben. Die Fallunterscheidung wird hier mit der Vorgabe von Werten für den Wochentag realisiert.

Eintrittspreis:
MO, DI, MI: 4 €
DO, FR    : 5 €
SA, SO    : 6 €

Eine solche Fallunterscheidung könnte man mit einem if-Ausdruck implementieren.

eintrittspreis tag =
    if tag == "MO" then
        4
    else if tag == "DI" then
        4
    else
        ...

Alternativ kann man hier einen case-Ausdruck nutzen.

eintrittspreis tag =
    case tag of
        "MO" -> 4
        "DI" -> 4
        "MI" -> 4
        "DO" -> 5
        "FR" -> 5
        "SA" -> 6
        "SO" -> 6
        _ -> 0

Mit einem case-Ausdruck kann man eine Fallunterscheidung mit einem Musterabgleich bilden. Ein case-Ausdruck gibt einen Ausdruck für das Muster vor und beschreibt dann die unterschiedlichen Fälle mit Werten, die der Musterausdruck annehmen kann. Für jeden vorgegebenen Wert wird die Datenverarbeitung mit einen hierfür vorgesehenen Ausdruck beschrieben. Beachte, dass immer alle möglichen Werte des Musterausdrucks abgedeckt werden müssen. Das realisiert man meist mit Hilfe des _, das für alle anderen Werte steht.

Die Abbildung verdeutlicht diesen Aufbau eines case-Ausdrucks.

case-Ausdruck

Eine Fallunterscheidung kann man auch mit einem Musterabgleich (man sagt auch Pattern-Matching) realisieren. Die verschiedenen Fälle beschreibt man durch Werte, die der Ausdruck für das Muster annehmen kann.

Der Begriff Muster wirkt eventuell noch seltsam, da wir bisher immer feste Werte als Musterausdruck hatten. In späteren Kapiteln werden wir weitergehende Möglichkeiten kennenlernen, die auch flexiblere Musterausdrücke zulassen.

Suche

v
8.2.2.5.4
www.inf-schule.de/deklarativ/fp_elm/elm_programme/fallunterscheidungen/konzept_musterabgleich
www.inf-schule.de/8.2.2.5.4
www.inf-schule.de/@/page/oLHRMXI0AMp8xaXn

Rückmeldung geben