On Tuesday, Sep 9, 2003, at 00:40 US/Pacific, Martin Sulzmann wrote:

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

Reply via email to