define Y(f); procedure (x); x(x) endprocedure( procedure (y); f(procedure(z); (y(y))(z) endprocedure) endprocedure ) enddefine; define fac(h); procedure (n); if n = 0 then 1 else n * h(n - 1) endif endprocedure enddefine; define fib(h); procedure (n); if n < 2 then 1 else h(n - 1) + h(n - 2) endif endprocedure enddefine; Y(fac)(5) => Y(fib)(5) =>