
#13814: Unable to resolve instance for polykinded superclass constraint on associated-type-family. -------------------------------------+------------------------------------- Reporter: isovector | Owner: (none) Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 8.0.1 Resolution: | Keywords: polykinds, | type families Operating System: Unknown/Multiple | Architecture: Type of failure: GHC rejects | Unknown/Multiple valid program | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by RyanGlScott): Very strange indeed. If you comment out the `Front Int` instance and inspect the file using GHCi and `-fprint-explicit-kinds`, you'll uncover something odd: {{{ GHCi, version 8.0.2: http://www.haskell.org/ghc/ :? for help Loaded GHCi configuration from /home/rgscott/.ghci [1 of 1] Compiling Test ( Bug.hs, interpreted ) Ok, modules loaded: Test. λ> :i Back class Back k (t :: k) -- Defined at Bug.hs:7:1 instance [safe] Back * Bool -- Defined at Bug.hs:12:10 λ> :i Front class Back (GHC.Prim.Any *) (FrontBack (GHC.Prim.Any *) k t) => Front k (t :: k) where type family FrontBack k1 k (t :: k) :: k1 -- Defined at Bug.hs:9:1 }}} The definition the `Back` class looks fine. But the definition of `Front` is quite bizarre! I'm not sure how `Any` is being introduced here, since I would have expected it to be this: {{{#!hs class Back k1 (FrontBack k1 k t) => Front k (t :: k) where type family FrontBack k1 k (t :: k) :: k1 }}} I suppose this also explains the confusing error message. If you try compiling the `Front Int` error message with `-fprint-explicit-kinds`, you'll see that: {{{ • No instance for (Back (GHC.Prim.Any *) (FrontBack (GHC.Prim.Any *) * Int)) arising from the superclasses of an instance declaration • In the instance declaration for ‘Front * Int’ }}} No wonder it's failing - we have an instance for `Back * (FrontBack * * Int)`, not for `Back (Any *) (FrontBack (Any *) * Int)`. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/13814#comment:2 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler