
On Fri, Apr 15, 2005 at 05:25:36PM +0100, Malcolm Wallace wrote:
Ian Lynagh
writes: Another nhc bug:
foo :: (Eq (f a), Functor f) => (a -> b) -> f a -> f b -> Bool
This is documented as one point of non-compliance with H'98 - it is the "lifting of the simple context restriction", and cannot be done right in nhc98 until it implements kind inference properly.
nhc98comp: Couldn't simplify the context (Prelude.Monad (y_19 d_20)). Possible sources for the problem are: 248:35-248:40, 243:24-243:49, 245:42-245:51, 246:35-246:40 and 247:35-247:79
which I assume is related to the above bug.
It is slightly related. It indicates a genuine type error, which you probably introduced in an attempt to workaround the above bug in nhc98. For instance, this should fail:
f :: (Monad m, Eq a) => a -> m a -> Bool f x y = (return x == y)
with the error:
Couldn't simplify the context (Prelude.Eq (u_5 t_5))
Ah, the problem turns out to be that the type can't be infered without the type signature, presumably due to the monomorphism restriction. Thanks Ian