[Haskell-cafe] Typeclass resolution errors quite puzzling
Bertram Felgenhauer
bertram.felgenhauer at googlemail.com
Mon Aug 15 17:07:58 UTC 2016
Tom Ellis wrote:
> On Mon, Aug 15, 2016 at 03:40:46PM +0100, Malcolm Wallace wrote:
> > It is no surprise that the instance Eq A is not mentioned, because there
> > is a perfectly valid instance for it already, and it contains no error.
>
> I disagree.
>
> There is no valid instance for Eq (A B), because all that the compiler knows
> is that 'Eq B => Eq (A B)', and there is no 'Eq B'.
>
> There are two separate issues here.
>
> 1. The reason the compilation fails is that there is no instance 'Eq (A B)'.
>
> 2. The reason there is no instance 'Eq (A B)' is that there is no instance
> 'Eq B'.
I believe the the missing Eq instance for B is the more useful bit of
information of these two, but I wouldn't mind an explanation of the
simplification steps that the compiler made to discover it. I'm a bit
worried though that such an explanation may be very long, and I expect
that it's not trivial to extract this information from ghc's constraint
based type checker. (In principle, -ddump-tc-trace prints all this
information, but it's far too verbose and cluttered by ghc internal
identifiers.)
Cheers,
Bertram
More information about the Haskell-Cafe
mailing list