RosettaCodeData/Task/Y-combinator/Elena/y-combinator.elena
2026-02-01 16:33:20 -08:00

16 lines
390 B
Text

import extensions;
singleton YCombinator
{
fix(func)
= (f){(x){ x(x) }((g){ f((x){ (g(g))(x) })})}(func);
}
public Program()
{
var fib := YCombinator.fix::(f => (i => (i <= 1) ? i : (f(i-1) + f(i-2)) ));
var fact := YCombinator.fix::(f => (i => (i == 0) ? 1 : (f(i-1) * i) ));
Console.printLine("fib(10)=",fib(10));
Console.printLine("fact(10)=",fact(10));
}