You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1.1 KiB
1.1 KiB
Simple Dispatch: case
The case
form dispatches to a clause by matching the result of an
expression to the values for the clause:
(case expr
[(datum ...+) body ...+]
...)
Each datum
will be compared to the result of expr
using equal?
,
and then the corresponding body
s are evaluated. The case
form can
dispatch to the correct clause in O_log N_
__ time for N
datum
s.
Multiple datum
s can be supplied for each clause, and the corresponding
body
s are evaluated if any of the datum
s match.
Example:
> (let ([v (random 6)])
(printf "~a\n" v)
(case v
[(0) 'zero]
[(1) 'one]
[(2) 'two]
[(3 4 5) 'many]))
0
'zero
The last clause of a case
form can use else
, just like cond
:
Example:
> (case (random 6)
[(0) 'zero]
[(1) 'one]
[(2) 'two]
[else 'many])
'many
For more general pattern matching (but without the dispatch-time
guarantee), use match
, which is introduced in [missing].