38 lines
1019 B
Plaintext
38 lines
1019 B
Plaintext
!import "../lib/patterns.tri" !Local
|
|
|
|
-- We can do conditional pattern matching by providing a list of lists, where
|
|
-- each sublist contains a boolean expression and a function to return if said
|
|
-- boolean expression evaluates to true.
|
|
|
|
value = 42
|
|
main = match value [[(equal? "Hello") (_ : ", world!")] [(equal? 42) (_ : "The answer.")]]
|
|
|
|
-- < main
|
|
-- > "The answer."
|
|
|
|
matchExample = (x : match x
|
|
[[(equal? 1) (_ : "one")]
|
|
[(equal? 2) (_ : "two")]
|
|
[(equal? 3) (_ : "three")]
|
|
[(equal? 4) (_ : "four")]
|
|
[(equal? 5) (_ : "five")]
|
|
[(equal? 6) (_ : "six")]
|
|
[(equal? 7) (_ : "seven")]
|
|
[(equal? 8) (_ : "eight")]
|
|
[(equal? 9) (_ : "nine")]
|
|
[(equal? 10) (_ : "ten")]
|
|
[ otherwise (_ : "I ran out of fingers!")]])
|
|
|
|
-- < matchExample 3
|
|
-- > "three"
|
|
-- < matchExample 5
|
|
-- > "five"
|
|
-- < matchExample 9
|
|
-- > "nine"
|
|
-- < matchExample 11
|
|
-- > "I ran out of fingers!"
|
|
-- < matchExample "three"
|
|
-- > "I ran out of fingers!"
|
|
-- < matchExample [("hello") ("world")]
|
|
-- > "I ran out of fingers!"
|