> GHC (5.03.20020410) wrongly accepts the following:
> 
> ::::::::::::::
> C.lhs
> ::::::::::::::
> > module C
> > where
> 
> > class A a where
> >     a :: a -> Int
> ::::::::::::::
> X.lhs
> ::::::::::::::
> > module X
> > where
> > import qualified C
> 
> > instance C.A Int where
> >   C.a = id

This has been fixed, and GHC 5.04 will behave correctly.

> Incidentally, I also noticed that GHC and Hugs behave differently
> for the following variant of X.lhs.
> 
> ::::::::::::::
> X.lhs
> ::::::::::::::
> > module X
> > where
> > import qualified C
> 
> > instance C.A Int where
> >   a = const X.a
> 
> > a = 4
> 
> GHC happily accepts the file while Hugs complains that
> 
> ERROR "X.lhs":6 - Type error in instance member binding
> *** Term           : a
> *** Type           : a -> Integer
> *** Does not match : Int -> Int
> 
> There seems to be a difference in defaulting. [Don't ask me
> which is the correct behaviour.] The problem disappears if I
> supply an explicit type signature for `a'.

Hugs's defaulting behaviour differs from Haskell 98 (and always has
done).  See for example this discussion on the Haskell mailing list:

   http://www.haskell.org/pipermail/haskell/2002-May/009616.html

(plus other messages with the same subject).

Could someone from the Hugs camp please document this?

Cheers,
        Simon
_______________________________________________
Glasgow-haskell-bugs mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs

Reply via email to