non-termination during compilation

Simon Peyton-Jones simonpj@microsoft.com
Fri, 11 Oct 2002 15:55:26 +0100


Yes, it's a known bug.  GHC just inlines over and over again.  It's
discussed in "secrets of the GHC inliner".  It's quite tiresome to fix
without compromising something else, and I have never found a real
program (rather than 'russel') that tickles the bug.=20

I'd better document it, though

Simon

| -----Original Message-----
| From: Christian Maeder [mailto:maeder@Informatik.Uni-Bremen.DE]
| Sent: 10 October 2002 16:02
| To: glasgow-haskell-users@haskell.org
| Subject: non-termination during compilation
|=20
| Hi,
|=20
| the following example causes ghc to loop (or run rather long):
|=20
| --- snip ---
|=20
| data U =3D MkU (U -> Bool)
|=20
| russel :: U -> Bool
| russel u@(MkU p) =3D not $ p u
|=20
| x :: Bool
| x =3D russel (MkU russel)
|=20
| --- snip ---
|=20
| I think, a compiler should always terminate, shouldn't it!?
|=20
| Compilation succeeds for "russel $ MkU russel" instead of "russel (MkU
| russel)".
| (Surely, x is bottom and therefore the example is senseless)
|=20
| Regards Christian
| _______________________________________________
| Glasgow-haskell-users mailing list
| Glasgow-haskell-users@haskell.org
| http://www.haskell.org/mailman/listinfo/glasgow-haskell-users