Control.Monad.Fix

ここにfixという名前でYコンビネータがあった。
以下は4の階乗を求める例。

import Control.Monad.Fix
main = print $ fix (\f n -> if n==0 then 1 else n * f (n-1)) 4