Anomalous Class Fundep Inference

Anton Moscal msk@post.tepkom.ru
Sat, 5 May 2001 14:46:10 +0400 (MSD)


On Sat, 5 May 2001, Jon Fairbairn wrote:

> Ashley Yakeley <ashley@semantic.org> wrote
> > OK, I understand it a bit better now. This code does not compile:
> > --
> > class X a
> > instance X Bool
> > instance (Num a) => X a
> > --
> > Can someone explain why the two instances overlap, given that Bool is not 
> > an instance of Num?
> > 
> > Would it be possible for Haskell to figure out this sort of thing and not 
> > complain about it, or would that lead to nasty problems?
> 
> Think what would happen if someone had a module that did define
> Bool as an instance of Num and imported the class X.

Program will be rejected at point of such import (or instance
declaration)? More simple example: importing two different modules
with the exactly same instance declarations for some type.

Anton Moscal