1.15 Pattern-Matching

► |  | Sprachebenen und Material zu Schreibe Dein Programm!

1 | Schreibe Dein Programm! - Anfänger
2 | Schreibe Dein Programm!
3 | Schreibe Dein Programm! - fortgeschritten
4 | Konstruktionsanleitungen
5 | sdp: Sprachen als Libraries
| Index

▼ | 1 | Schreibe Dein Programm! - Anfänger

1.1 | Definitionen
1.2 | Record-Typ-Definitionen
1.3 | Record-Typ-Definitionen mit Signatur-Parametern
1.4 | Singleton-Definitionen
1.5 | Funktionsapplikation
1.6 | #t and #f
1.7 | lambda / λ
1.8 | Bezeichner
1.9 | cond
1.10 | if
1.11 | and
1.12 | or
1.13 | Signaturen
1.14 | Testfälle
1.15 | Pattern-Matching
1.16 | Eigenschaften
1.17 | Primitive Operationen

On this page:

match

top contents ← prev up next →

#### 1.15`` Pattern-Matching🔗ℹ

> syntax (match expr (pattern definition ... expr) ...)
> pattern |  | = |  | id
> |  | | |  | #t
> |  | | |  | #f
> |  | | |  | string
> |  | | |  | number
> |  | | |  | ...
> |  | | |  | (constructor pattern ...)

Ein match- Ausdruck führt eine Verzweigung durch, ähnlich wie cond. Dazu wertet match zunächst einmal den Ausdruck expr nach dem match zum Wert v aus. Es prüft dann nacheinander jeden Zweig der Form (pattern expr) dahingehend, ob das Pattern pattern darin auf den Wert v passt (“matcht”). Beim ersten passenden Zweig (pattern expr) macht match dann mit der Auswertung voh expr weiter.

Ob ein Wert v passt, hängt von pattern ab:

- Ein Pattern, das ein Literal ist (#t, #f, Zeichenketten string, Zahlen number) passt nur dann, wenn der Wert v gleich dem Pattern ist.

- Ein Pattern, das ein Bezeichner id ist, passt auf jeden Wert. Der Bezeichner wird dann an diesen Wert gebunden und kann in dem Ausdruck des Zweigs benutzt werden.

- Das Pattern ... passt auf jeden Wert, ohne dass ein Bezeichner gebunden wird.

- Ein Pattern (constructor pattern ...), bei dem constructor ein Record-Konstruktor ist (ein Konstruktor-Pattern), passt auf v, falls v ein passender Record ist, und dessen Felder auf die entsprechenden Patterns passen, die noch im Konstruktor-Pattern stehen.

top contents ← prev up next →