Overlapping, undecidable, incoherent -- or worse?
Simon Peyton-Jones
simonpj at microsoft.com
Thu May 20 18:49:38 EDT 2004
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: glasgow-haskell-users-bounces at haskell.org
[mailto:glasgow-haskell-users-
| bounces at haskell.org] On Behalf Of Stefan Reich
| Sent: 20 May 2004 13:48
| Cc: glasgow-haskell-users at haskell.org
| 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
| Glasgow-haskell-users at haskell.org
| http://www.haskell.org/mailman/listinfo/glasgow-haskell-users
More information about the Glasgow-haskell-users
mailing list