Weird Undecidable Instances Bug
Ashley Yakeley
ashley at semantic.org
Sun Sep 7 21:23:52 EDT 2003
This fails to compile. Oddly enough, if you remove the instance
declaration (1), or if you remove the r parameter to T, or if you do any
of the other simplifications I've tried, it compiles successfully.
-- 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;
g :: (F a b,D b (T r)) => (a,T r);
g = f;
}
$ ghc -fglasgow-exts -fallow-undecidable-instances -c WeirdInsts.hs
WeirdInsts.hs:18:
Could not deduce (C (T r)) from the context (F a b, D b (T r))
arising from use of `f' at WeirdInsts.hs:18
Probable fix:
Add (C (T r)) to the type signature(s) for `g'
Or add an instance declaration for (C (T r))
In the definition of `g': g = f
$ ghc --version
The Glorious Glasgow Haskell Compilation System, version 6.0.1
--
Ashley Yakeley, Seattle WA
More information about the Glasgow-haskell-bugs
mailing list