-
Notifications
You must be signed in to change notification settings - Fork 63
Basic usage
David Nolen edited this page Jun 17, 2013
·
18 revisions
The simplest thing you can do is match literals:
(let [x true
y true
z true]
(match [x y z]
[_ false true] 1
[false true _ ] 2
[_ _ false] 3
[_ _ true] 4
:else 5))
Note that the only clause that matches the values of the local variables is the fourth one.
When matching on a single variable you may omit the brackets:
(let [x true]
(match x
true 1
false 2
:else 5))
You may match values and give them names for later use:
(let [x 1 y 2]
(match [x y]
[1 b] b
[a 2] a
:else nil))
This may seem pointless here but in complex patterns this feature becomes more useful (consider red black tree balancing for example).