Actually, you're right, GHC will infer the type you suggest. GHC is lazy, and tries to postpone context reduction as long as possible, until forced by some user-supplied context. But I don't think that makes the subtleties go away.
Simon | -----Original Message----- | From: [EMAIL PROTECTED] [mailto:glasgow-haskell-users- | [EMAIL PROTECTED] On Behalf Of Stefan Reich | Sent: 20 May 2004 13:48 | Cc: [EMAIL PROTECTED] | Subject: Re: Overlapping, undecidable, incoherent -- or worse? | | Simon Peyton-Jones wrote: | > As a trivial example, try | > | > f a = a |= a | > | > What type shall we infer for f? | > f :: (Bounded a, Enum a, SemiRing a) => a -> a | > or | > f :: (CSemiRing a) => a -> a | | This has always confused me - GHC always seems to use the strongest | possible conditions when inferring types (CSemiRing is stronger than PO | because it implies it). Why isn't the type just | | f :: (PO a) => a -> a | | ? Isn't this the most straight-forward (and universal) typing, | especially in the presence of overlapping/undecidable instances? | | -Stefan | | | _______________________________________________ | Glasgow-haskell-users mailing list | [EMAIL PROTECTED] | http://www.haskell.org/mailman/listinfo/glasgow-haskell-users _______________________________________________ Glasgow-haskell-users mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/glasgow-haskell-users