local function y(f) local g = |r| -> f(|x| -> r(r)(x)) return g(g) end local almost_fac = |f| -> (|x| -> x <= 1 ? 1 : x * f(x - 1)) local almost_fib = |f| -> (|x| -> x <= 2 ? 1 : f(x - 1) + f(x - 2)) local fac = y(almost_fac) local fib = y(almost_fib) print($"fac(10) = {fac(10)}") print($"fib(10) = {fib(10)}")