1.15 Pattern-Matching
syntax
(match expr (pattern 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.