Y = { f => {x=> {n => f(x(x))(n)}} ({x=> {n => f(x(x))(n)}}) } facStep = { f => {x => x < 1 ? 1 : x*f(x-1) }} fibStep = { f => {x => x == 0 ? 0 : (x == 1 ? 1 : f(x-1) + f(x-2))}} YFac = Y(facStep) YFib = Y(fibStep) > "Factorial 10: ", YFac(10) > "Fibonacci 10: ", YFib(10)