RosettaCodeData/Task/Y-combinator/Phix/y-combinator.phix
2019-09-12 10:33:56 -07:00

26 lines
565 B
Text

function call_fn(integer f, n)
return call_func(f,{f,n})
end function
function Y(integer f)
return f
end function
function fac(integer self, integer n)
return iff(n>1?n*call_fn(self,n-1):1)
end function
function fib(integer self, integer n)
return iff(n>1?call_fn(self,n-1)+call_fn(self,n-2):n)
end function
procedure test(string name, integer rid=routine_id(name))
integer f = Y(rid)
printf(1,"%s: ",{name})
for i=1 to 10 do
printf(1," %d",call_fn(f,i))
end for
printf(1,"\n");
end procedure
test("fac")
test("fib")