The mzlib/match library provides a match form similar to that of scheme/match, but with an different (older and less extensible) syntax of patterns.
(match val-expr clause ) | ||||||||||
| ||||||||||
|
See match from scheme/match for a description of matching. The grammar of pat for this match is as follows:
pat |
| ::= |
| id |
| match anything, bind identifier |
|
| | |
| _ |
| match anything |
|
| | |
| literal |
| match literal |
|
| | |
| 'datum |
| match equal? datum |
|
| | |
| (lvp ...) |
| match sequence of lvps |
|
| | |
| (lvp ... . pat) |
| match lvps consed onto a pat |
|
| | |
| #(lvp ...) |
| match vector of pats |
|
| | |
| #&pat |
| match boxed pat |
|
| | |
| ($ struct-id pat ...) |
| match struct-id instance |
|
| | |
| (and pat ...) |
| match when all pats match |
|
| | |
| (or pat ...) |
| match when any pat match |
|
| | |
| (not pat ...) |
| match when no pat match |
|
| | |
| (= expr pat) |
| match (expr value) to pat |
|
| | |
| (? pred-expr pat ...) |
| match if (expr value) and pats |
|
| | |
| `qp |
| match quasipattern |
literal |
| ::= |
| #t |
| match true |
|
| | |
| #f |
| match false |
|
| | |
| string |
| match equal? string |
|
| | |
| number |
| match equal? number |
|
| | |
| character |
| match equal? character |
|
| | |
| bytes |
| match equal? byte string |
|
| | |
| keyword |
| match equal? keyword |
|
| | |
| regexp |
| match equal? regexp literal |
|
| | |
| pregexp |
| match equal? pregexp literal |
lvp |
| ::= |
| pat |
| greedily match pat instances |
|
| | |
| pat |
| match pat |
ooo |
| ::= |
| ... |
| zero or more; ... is literal |
|
| | |
| ___ |
| zero or more |
|
| | |
| ..k |
| k or more |
|
| | |
| __k |
| k or more |
qp |
| ::= |
| literal |
| match literal |
|
| | |
| id |
| match equal? symbol |
|
| | |
| (qp ...) |
| match sequences of qps |
|
| | |
| (qp ... . qp) |
| match sequence of qps consed onto a qp |
|
| | |
| (qp ... qp ooo) |
| match qps consed onto a repeated qp |
|
| | |
| #(qp ...) |
| match vector of qps |
|
| | |
| #&qp |
| match boxed qp |
|
| | |
| ,pat |
| match pat |
|
| | |
| ,@pat |
| match pat, spliced |
| |
| |
| |
| |
| |
|
Analogous to the combined forms from scheme/match.
| |||
|
Analogous to the form and parameter from scheme/match. The define-match-expander form, however, supports an extra proc-expr as the middle one: an expander for use with match from mzlib/match.