mod extern "./foo" fn extern "c" hello() unit let extern answer: int fn extern "c" printf(fmt: ptr[u8], ..) i32 fn main() unit = { println("Hello, World!") unsafe hello() run(print-answer) do-add(add, 1, 2) unsafe printf("num = %d\n".ptr, map(1, id)) } fn print-answer() unit = { unsafe printf("The answer is %d\n".ptr, answer) } fn add(a: int, b: int) int = { a + b } fn do-add(f: fn(int, int) int, a: int, b: int) unit = { unsafe printf("a + b = %d\n".ptr, f(a, b)) } fn run(f: fn() unit) unit = f() fn id[T](x: T) T = x fn map[A, B](val: A, f: fn(A) B) B = f(val)