let Y G = let type rt *a = recrt (rt *a -> *a) -- `g' has a rec type
          in  let Ggg (recrt g) = G(g (recrt g))
              in  Ggg (recrt Ggg)

and F f n = if n=0 then 1 else n*f(n-1)

in  Y F 10

--\fB Y: Fixed-Point Operator or Paradoxical Combinator in LML. \fP
