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

37 Match

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

 (require unstable/match)

This library is unstable; compatibility will not be maintained. See Unstable 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)