Your type annotation
g :: (F a b,D b (T r)) => (a,T r) g = f
is simply incorrect.
I must say I don't understand. I need a value of that type. In the original, "g" is actually a method in a class, and its definition is in an instance declaration. Its type is actually given, not annotated. For instance:
-- ghc -fglasgow-exts -fallow-undecidable-instances -c WeirdInsts.hs module WeirdInsts where { data T r = MkT;
class C t;
class D b t;
instance (C (T r)) => D b (T r); -- (1)
class F a b | a -> b;
f :: (F a b,D b t) => (a,t); f = undefined;
class G t where { g :: forall a b. (F a b,D b t) => (a,t); };
instance G (T r) where { g = f; }; }
This exhibits the same behaviour.
-- Ashley Yakeley, Seattle WA
_______________________________________________ Glasgow-haskell-bugs mailing list [EMAIL PROTECTED] http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs