// extern fn printf(fmt: str, ...): i32 = {};
extern fn printf(fmt: str, ...) = {};
fn println(value: i32) = printf("%d\n", value);
fn min(a: i32, b: i32): i32 = {
if (a < b) return a;
return b;
}
fn max(a: i32, b: i32): i32 = {
if (a > b) return a;
return b;
}
fn factorial(n: i32): i32 = {
if (n == 0) return 1;
return n * factorial(n - 1);
}
fn fibonacci(n: i32): i32 = {
if (n <= 1) return n;
return fibonacci(n - 1) + fibonacci(n - 2);
}
fn main() = {
let value = fibonacci(40);
println(value);
let value = factorial(10);
println(value);
let value = min(10, 20);
println(value);
let value = max(10, 20);
println(value);
}