Dmitry Antonyuk (lomeo) came up with a piece of code that hung GHC 6.6: newtype Foo a = Foo (Foo a -> a) bar x@(Foo f) = f x baz = bar (Foo bar) See the original discussion (in Russian) at: http://lomeo.livejournal.com/35674.html