wuz/tests/test_fun.wuz

68 lines
856 B
Plaintext
Raw Normal View History

2023-08-28 11:07:19 +00:00
assert fun<int:int> is type
assert fun<int:> is type
assert fun<:int> is type
assert fun<int, int: float, str> is type
assert fun< fun<:> : int> is type
let a = fun (x as int, y as int) as int
0
end
assert a is fun<int, int: int>
assert !(a is fun<:>)
let b = fun (x as int) as int
return x * 7
end
assert 42 == b 6
let c = fun () as int
return 3 * 6
end
assert 18 == *c
let d = fun () as int
return 43
27
end
assert 43 == *d
fun e (n as int) as int
return n * 2
end
assert 14 == e 7
2023-08-28 18:55:37 +00:00
fun f (n as int) as int
if n == 0
return 1
end
return n * f(n - 1)
end
assert 120 == f 5
2023-08-28 20:43:37 +00:00
fun h (n as int, m as fun<int:int>) as int
return (m (m n))
end
fun i (n as int) as int
return n * 3
end
assert 27 == h 3, i
2023-08-28 22:14:24 +00:00
fun j (n as int) as int
fun j_inner (n as int) as int
return n * 2
end
return j_inner (j_inner n)
end
assert 32 == j 8