var a = fun (x) return x * 2 end assert a(7) eq 14 assert a(a(7)) eq 28 var b = fun (u, v) return u - v end assert b(a(2), a(3)) eq -2 var c = fun(x, f) return f(f(x)) end assert c(7, a) eq 28 var d = fun(x) var a = fun(x) x + 1 end return a(a(x)) end assert d(3) eq 5 var e = fun(n) if n == 0 1 else n * e(n - 1) end end assert e(5) eq 120 var f = fun(x, n) x(x(n)) end assert f(fun(x) x * 2 end, 2) eq 8