#7123: Dictionary method should be applicable even in existential context ------------------------------+--------------------------------------------- Reporter: heisenbug | Owner: Type: bug | Status: new Priority: normal | Component: Compiler Version: 7.4.1 | Keywords: Os: Unknown/Multiple | Architecture: Unknown/Multiple Failure: None/Unknown | Testcase: Blockedby: | Blocking: Related: | ------------------------------+--------------------------------------------- {{{ {-# LANGUAGE GADTs, TypeFamilies #-}
class Foo a where type Bar a baz :: Bar a -> Int instance Foo Int where type Bar Int = (Int, Int) baz (i, _) = i data Quux where Quux :: Foo a => a -> Bar a -> Quux q = Quux (42 :: Int) (1, 2) i = case q of Quux _ b -> baz b }}} repro.hs:18:31: Could not deduce (Bar a0 ~ Bar a) from the context (Foo a) bound by a pattern with constructor Quux :: forall a. Foo a => a -> Bar a -> Quux, in a case alternative at repro.hs:18:15-22 NB: `Bar' is a type function, and may not be injective The type variable `a0' is ambiguous Possible fix: add a type signature that fixes these type variable(s) In the first argument of `baz', namely `b' In the expression: baz b In a case alternative: Quux _ b -> baz b Failed, modules loaded: none. -- Ticket URL: <http://hackage.haskell.org/trac/ghc/ticket/7123> 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