[GHC] #10524: PolyKinds doesn't interact well with DeriveFunctor
GHC
ghc-devs at haskell.org
Mon Jun 22 15:46:48 UTC 2015
#10524: PolyKinds doesn't interact well with DeriveFunctor
-------------------------------------+-------------------------------------
Reporter: RyanGlScott | Owner:
Type: bug | Status: new
Priority: normal | Milestone:
Component: Compiler | Version: 7.10.1
Resolution: | Keywords:
Operating System: Unknown/Multiple | Architecture:
Type of failure: GHC rejects | Unknown/Multiple
valid program | Test Case:
Blocked By: | Blocking:
Related Tickets: | Differential Revisions:
-------------------------------------+-------------------------------------
Comment (by rwbarton):
Good question. In principle there are classes at other kinds `Functor1`,
`Functor2` (not part of a systematic naming scheme) for which you can
write
{{{
instance (Functor1 (f :: (* -> *) -> *), Functor2 (g :: * -> (* -> *))) =>
Functor (Compose f g)
}}}
but GHC will probably never be able to derive that instance. (Maybe if
eventually get a polykinded `Functor`, but then the deriving clause could
produce a kind-polymorphic instance and there is no problem.) So, I don't
see any real issue with having ordinary `deriving` producing an instance
for `Functor (Compose * f g)`, to write the kind variable explicitly.
However, it's certainly more clear-cut with the standalone deriving
declaration, since then the kind variable is determined by the context
which you wrote explicitly.
I think GHC may have some general principles regarding ordinary deriving
declarations and how they are less general than standalone deriving, but I
never understood the exact details (aside from the fact that a standalone
deriving declaration lets you specify the context). Maybe they don't have
anything to say about this case with a kind variable anyways.
Not sure where that leaves this ticket; the behavior of HEAD is a bug that
I'll file separately. Maybe a feature request dependent on the resolution
of that bug.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/10524#comment:5>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list