On this page:
==
match?
as
Version: 5.1.3

21 Match

Sam Tobin-Hochstadt <samth@ccs.neu.edu>

 (require unstable/match)

This library is unstable; compatibility will not be maintained. See Unstable: May Change Without Warning for more information.

(== val comparator)
(== val)
A match expander which checks if the matched value is the same as val when compared by comparator. If comparator is not provided, it defaults to equal?.

Examples:

> (match (list 1 2 3)
    [(== (list 1 2 3)) 'yes]
    [_ 'no])

'yes

> (match (list 1 2 3)
    [(== (list 1 2 3) eq?) 'yes]
    [_ 'no])

'no

> (match (list 1 2 3)
    [(list 1 2 (== 3 =)) 'yes]
    [_ 'no])

'yes

The subsequent bindings were added by Carl Eastlund <cce@racket-lang.org>.

(match? val-expr pat ...)
Returns #t if the result of val-expr matches any of pat, and returns #f otherwise.

Examples:

> (match? (list 1 2 3)
    (list a b c)
    (vector x y z))

#t

> (match? (vector 1 2 3)
    (list a b c)
    (vector x y z))

#t

> (match? (+ 1 2 3)
    (list a b c)
    (vector x y z))

#f

(as ([lhs-id rhs-expr] ...) pat ...)
As a match expander, binds each lhs-id as a pattern variable with the result value of rhs-expr, and continues matching each subsequent pat.

Example:

> (match (list 1 2 3)
    [(as ([a 0]) (list b c d)) (list a b c d)])

'(0 1 2 3)