67 lines
968 B
Plaintext
67 lines
968 B
Plaintext
double := fun (n: int) -> int {
|
|
return n * 2;
|
|
};
|
|
|
|
assert double(2) == 4;
|
|
assert double(18 + 3) == 42;
|
|
assert double(double(-3)) == -12;
|
|
|
|
fac := fun (n: int) -> int {
|
|
if n == 0 { return 1; }
|
|
return n * this(n - 1);
|
|
};
|
|
|
|
assert fac(5) == 120;
|
|
|
|
inner_val := fun () -> int {
|
|
n := 28;
|
|
return n;
|
|
};
|
|
|
|
assert inner_val() == 28;
|
|
|
|
inner_fun := fun (n: int) -> int {
|
|
f := fun (n: int) -> int {
|
|
return n * 2;
|
|
};
|
|
|
|
return f(f(n));
|
|
};
|
|
|
|
assert inner_fun(4) == 16;
|
|
|
|
twice := fun (n: int, f: (int -> int)) -> int {
|
|
return f(f(n));
|
|
};
|
|
|
|
incr := fun (n: int) -> int {
|
|
return n + 1;
|
|
};
|
|
|
|
dble := fun (n: int) -> int {
|
|
return n * 2;
|
|
};
|
|
|
|
assert twice(4, incr) == 6;
|
|
assert twice(4, dble) == 16;
|
|
assert twice(3, fun (x: int) -> int {
|
|
return x + 1;
|
|
} ) == 5;
|
|
|
|
fun sugar(n: int) -> int {
|
|
return n * 2;
|
|
}
|
|
|
|
assert sugar(21) == 42;
|
|
|
|
fun add3(x, y, z: int) -> int {
|
|
return x + y + z;
|
|
}
|
|
|
|
assert add3(2, 4, 6) == 12;
|
|
|
|
fun empty(n: string) {
|
|
return;
|
|
}
|
|
|
|
empty('useless'); |