#4401: Functional dependencies regression
---------------------------------+------------------------------------------
Reporter: rl | Owner:
Type: bug | Status: new
Priority: normal | Component: Compiler
Version: 7.1 | Keywords:
Testcase: | Blockedby:
Os: Unknown/Multiple | Blocking:
Architecture: Unknown/Multiple | Failure: None/Unknown
---------------------------------+------------------------------------------
Testcase:
{{{
{-# LANGUAGE FlexibleInstances, UndecidableInstances,
MultiParamTypeClasses, FunctionalDependencies #-}
module Foo where
class Mul x y z | x y -> z
class IsType a
class IsType a => IsSized a s | a -> s
data Array n a = Array
instance IsSized a s => IsType (Array n a)
instance (IsSized a s, Mul n s ns) => IsSized (Array n a) ns
}}}
ghc-7.0.0.20101014 rejects this with:
{{{
Couldn't match type `s' with `s1'
because this skolem type variable would escape: `s1'
This skolem is bound by the instance declaration
In the instance declaration for `IsSized (Array n a) ns'
}}}
ghc-7.0.0.20101005 and all previous versions accept it. This is from the
llvm package, so is fairly critical.
--
Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/4401>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
_______________________________________________
Glasgow-haskell-bugs mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs