
#10831: Document conditions on deriving Functor -------------------------------------+------------------------------------- Reporter: htebalaka | Owner: Type: bug | Status: new Priority: low | Milestone: Component: Compiler (Type | Version: 7.10.2 checker) | Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: Documentation | Unknown/Multiple bug | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Revisions: -------------------------------------+------------------------------------- Changes (by rwbarton): * failure: GHC rejects valid program => Documentation bug Comment: Right, this is expected behavior. The compiler doesn't "look inside" the definitions of other data types when deriving Functor, it relies on Functor instances for those types. But that is not enough to handle the occurrence of `b` inside the first argument to `Either`. One would need another class {{{ class Functor1 f where fmap1 :: (a -> b) -> f a x -> f b x instance Functor1 Either }}} I note that there is no documentation in the User's Guide about when deriving Functor will succeed. That at least should be fixed, so I'm repurposing this ticket. Feel free to also submit a feature request if you like. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/10831#comment:2 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler