Own-Programming-Language-Tu.../examples/basics/pattern_matching.own

41 lines
800 B
Plaintext
Raw Normal View History

2016-02-20 10:12:26 +02:00
use "std"
use "types"
v = rand(10)
println match v {
case 0: "Zero"
case 1: "One"
case x if x <= 5: "Two..five"
case _: "Six..nine"
}
def match1(v) = match v {
case 1: "One"
case "Two": 2
case x if typeof(x) == NUMBER: "Number"
case x if typeof(x) == STRING: "String"
case _: "other"
}
println match1(1)
println match1(322)
println match1("test")
println match1("Two")
println match1([2])
2016-06-02 17:43:55 +03:00
println "\nRecursive factorial"
2016-02-20 10:12:26 +02:00
println factorial(6)
def factorial(n) = match n {
case 0: 1
case _: n * factorial(n - 1)
}
2016-06-02 17:43:55 +03:00
println "\nPattern matching on arrays"
2016-02-20 10:12:26 +02:00
println printArrayRecursive([1, 2, 3, 4, 5, 6, 7])
def printArrayRecursive(arr) = match arr {
case [head :: tail]: "[" + head + ", " + printArrayRecursive(tail) + "]"
case []: "[]"
case last: "[" + last + ", []]"
}