import std::*
let foo := ( bar : (int, int) -> int ): int => {
bar(3, 4)
}
let test := (x : int, y : int) : int => {
x + y
}
printi(foo(test))
let a := 3
let nested := (offset : int, func: ( (int, int) -> int ) -> int) : int => {
func(test) + offset
}
print(" ")
printi(nested(a, foo))
print(" ")
printi(nested(7, (inner : (int, int) -> int): int => { inner(41, 17) }))
let triple := (a: int, b: int, c: int): int => {
a + b + c
}
print(" ")
printi(triple(1, 2, 3))
let six_params := (a: int, b: int, c: int, d: int, e: str, f: bool): int => {
if f {
print(e)
};
(a + b + c) * d
}
print(" ")
printi(six_params(1, 2, 3, 4, "from_function ", true))