gux/tests/fun.gux

78 lines
1.1 KiB
Plaintext
Raw Permalink Normal View History

2024-02-16 21:47:37 +00:00
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;
}
2024-02-17 22:35:58 +00:00
empty('useless');
fun first(n: int) -> int {
return 27;
}
fun first(n: float) -> int {
return 79;
}
assert first(4) == 27;
assert first(7.3) == 79;