(phixonline)--> with javascript_semantics 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")