68 lines
856 B
Plaintext
68 lines
856 B
Plaintext
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
|
|
|
|
fun f (n as int) as int
|
|
if n == 0
|
|
return 1
|
|
end
|
|
|
|
return n * f(n - 1)
|
|
end
|
|
|
|
assert 120 == f 5
|
|
|
|
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
|
|
|
|
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
|