let Y := map f to let g := map x to f(map z to (x(x))(z)); in g(g); FACT := map f to map n to if n = 0 then 1 else n * f(n - 1); in (Y(FACT))(3)