
#9902: Type family, pattern not matching -------------------------------------+------------------------------------- Reporter: erisco | Owner: Type: bug | Status: closed Priority: normal | Milestone: Component: Compiler | Version: 7.8.3 (Type checker) | Keywords: Resolution: invalid | Architecture: x86_64 (amd64) Operating System: MacOS X | Difficulty: Unknown Type of failure: GHC | Blocked By: rejects valid program | Related Tickets: Test Case: | Blocking: | Differential Revisions: | -------------------------------------+------------------------------------- Changes (by simonpj): * status: new => closed * resolution: => invalid Comment: Your problem is that `(:.:)` is too polymorphic. Try this: {{{ data (:.:) (g :: kb -> *) (f :: ka -> kb) (x :: ka) }}} Then I think everything works. As you have it, `(:.:)` has kind {{{ (:.:) :: forall k1 k1 k3. k1 -> k2 -> k3 -> * }}} When you use it on the RHS of the first equation of `(:+:)`, the kinds of the RHS are not fully determined, so you get `AnyK`. Try using `-fprint-explicit-kinds` to see all this. Do re-open if you think there's a bug. Simon -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/9902#comment:1 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler