"deriving (Functor)" on a polykinded type produces ill-kinded instance
Arose in #10524 (closed), and new since 7.10.
rwbarton@morphism:/tmp$ ~/ghc/inplace/bin/ghc-stage2 --interactive
GHCi, version 7.11.20150615: http://www.haskell.org/ghc/ :? for help
Prelude> :set -XPolyKinds -XDeriveFunctor -ddump-deriv -fprint-explicit-kinds
Prelude> newtype Compose f g a = Compose (f (g a)) deriving Functor
==================== Derived instances ====================
Derived instances:
instance forall (k_and :: BOX)
(f_ane :: k_and -> *)
(g_anf :: * -> k_and).
(GHC.Base.Functor f_ane, GHC.Base.Functor g_anf) =>
GHC.Base.Functor (Ghci1.Compose k_and * f_ane g_anf) where
GHC.Base.fmap f_ang (Ghci1.Compose a1_anh)
= Ghci1.Compose (GHC.Base.fmap (GHC.Base.fmap f_ang) a1_anh)
Generic representation:
Generated datatypes for meta-information:
Representation types:
Prelude> :i GHC.Base.Functor
class Functor (f :: * -> *) where
[...]
The context (GHC.Base.Functor f_ane, GHC.Base.Functor g_anf) is ill-kinded except when k_and = *.
Trac metadata
| Trac field | Value |
|---|---|
| Version | 7.11 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Compiler |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture |