logo       

Re: Weird Undecidable Instances Bug: msg#00029

lang.haskell.glasgow.bugs

Subject: Re: Weird Undecidable Instances Bug

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


<Prev in Thread] Current Thread [Next in Thread>
Google Custom Search

News | FAQ | advertise