それ、GHC6.6だと固まるんだけど、なぜだろ

$ cat test.hs
data X a = T (X a -> a)
fixpoint g = (\x -> g (x (T x))) (\(T x) -> g (x (T x)))

main :: IO ()
main = print $ fixpoint (\f -> \x -> if x==0 then 1 else x*f(x-1)) 5

$ hugs test.hs

(ロゴ一部省略)
|| || Version: September 2006 _________________________________________

Haskell 98 mode: Restart with command line option -98 to enable extensions

Type :? for help
Main> main
120

Main> [Leaving Hugs]

$ ghc --version
The Glorious Glasgow Haskell Compilation System, version 6.6

$ ghc --make test.hs
[1 of 1] Compiling Main ( test.hs, test.o )
(固まる)