module Main { extern func PrintInt(x: int); extern func PrintLine(msg: String); func Apply(x: int, op: func(int) -> int) -> int { return op(x); } func Double(x: int) -> int { return x * 2; } func main() -> int { // Closure as variable let add: func(int, int) -> int = |a: int, b: int| -> int { return a + b; }; let sum: int = add(3, 4); PrintInt(sum); PrintLine(""); // Closure passed to function let result: int = Apply(5, |x: int| -> int { return x * 3; }); PrintInt(result); PrintLine(""); // Address of named function as function pointer let d: func(int) -> int = &Double; PrintInt(d(7)); PrintLine(""); return 0; } }