!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!"