fn recursive (x) {  if (x>100) { return true; } else { let foo = 200; let tmp = fn (x) { x + y}; recursive(x+1) } }


let new_adder = fn (x) { return fn (y) { y + x }; };

let add_ten = new_adder(10);

add_ten(10)


let foo = fn () { let tmp = 200; return fn (y) { y + tmp }; };

let add_200 = foo();

add_200(10)



let apply_function = fn (x,y, func) { func(x,y) };

fn add(x,y) { x + y }

apply_function(3,4,add)



