#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
Glasgow-haskell-bugs@haskell.org
http://www.haskell.org/mailman/listinfo/glasgow-haskell-bugs

Reply via email to