
#7849: Error on pattern matching of an existential whose context includes a type function -----------------------------+---------------------------------------------- Reporter: guest | Owner: Type: bug | Status: new Priority: normal | Component: Compiler (Type checker) Version: 7.4.2 | Keywords: Os: Unknown/Multiple | Architecture: Unknown/Multiple Failure: None/Unknown | Blockedby: Blocking: | Related: -----------------------------+---------------------------------------------- Comment(by goldfire): I agree that this is an obscure type error and needs some attention, but the needs for {{{-XGADTs}}} is sensible to me, here. After all, your {{{ASubj}}} datatype is a GADT, albeit using weird syntax. The prototypical GADT is like this: {{{ data Foo a where FInt :: Foo Int }}} But, you could write that same datatype like this: {{{ data Foo a = (a ~ Int) => FInt }}} A GADT really is just a normal datatype with equality constraints on its parameter(s). So, pattern matching on such a datatype should indeed require {{{-XGADTs}}}. -- Ticket URL: http://hackage.haskell.org/trac/ghc/ticket/7849#comment:1 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler