
#13407: Fix printing of higher-rank kinds -------------------------------------+------------------------------------- Reporter: goldfire | Owner: (none) Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 8.0.1 Resolution: | Keywords: TypeInType Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by simonpj): Remember that teh arguments in a type instance are types, not type variables. So when you write {{{ type instance Foo (a :: forall k. k-> TYpe) = ... }}} GHC treats it much like {{{ -- Suppose T :: forall k. k -> Type type instance Foo T = ... }}} It'll instantaite `T`'s kind to give `T k1` (where `k1` is a unification variable. Then it'll to unify `k1->Type` with the expected argument kind of `F`, namely `Type`. Hence the error mesage. Th eoddity is that it prints `a k1` rather than just `a` even without `fprint-explicit-kinds`. I expect that's because the head isn't at type constructor, but rather a type variable -- a pretty-printing bug. But a palpable bug, I think. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/13407#comment:3 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler