non-termination during compilation

Christian Maeder maeder@Informatik.Uni-Bremen.DE
Thu, 10 Oct 2002 17:01:34 +0200


the following example causes ghc to loop (or run rather long):

--- snip ---

data U = MkU (U -> Bool)
russel :: U -> Bool
russel u@(MkU p) = not $ p u

x :: Bool
x = russel (MkU russel)

--- snip ---

I think, a compiler should always terminate, shouldn't it!?

Compilation succeeds for "russel $ MkU russel" instead of "russel (MkU
(Surely, x is bottom and therefore the example is senseless)

Regards Christian