Closures
Functions are values. A function type is written fn(A) -> R. Named function
parameters and results are always annotated. A lambda uses =>. Unannotated
lambdas are only allowed where an expected function type supplies the
parameter types.
module closures
pub fn run(f: fn(Integer) -> Integer, n: Integer) -> Integer { f(n)}
pub fn inc(n: Integer) -> Integer { run(fn(x) => x + 1, n)}