RosettaCodeData/Task/Y-combinator/Falcon/y-combinator.falcon

10 lines
275 B
Plaintext

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)