Church of the No Fixed Point programmer:<p><pre><code>    succChurch n f = n f . f

    facChurch n f = n g (const f) id where
            g f n = n (f (succChurch n))

    toChurch 0 = const id
    toChurch k = succChurch (toChurch (k-1))

    fromChurch n = n succ 0

    fac = fromChurch . facChurch . toChurch</code></pre>