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

Reply via email to