
#8599: Deriving in associated data families ignores instance's constraints -------------------------------------+------------------------------------ Reporter: mojojojo | Owner: goldfire Type: bug | Status: new Priority: normal | Milestone: Component: Documentation | Version: 7.6.3 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Unknown/Multiple Type of failure: None/Unknown | Difficulty: Unknown Test Case: | Blocked By: Blocking: | Related Tickets: -------------------------------------+------------------------------------ Changes (by simonpj): * owner: => goldfire Comment: I agree with Richard here. The primary goal of allowing you to declare a `type`/`data` family within a `class` declaration is to make the link explicit and to remind you if you forget to give the instance in an `instance` declaration of the class. I also love the duality: * in a class declaration you give the type signature for any value methods; in the instance you give the actual method. * in a class declaration you give the kind signature for any associated types; in the instance you give the actual type definitions. But really it's not much more than syntactic sugar. You could equally well give the associated type family definitions outside the class, and likewise the instances. However, as syntactic sugar goes, it's pretty heavy. GHC has a lot of code that deals with associated types! In any case, that's why I agree with Richard's analysis. I think it'd be a mistake to conflate the context for the class instance declaration with the context for a derived equality instance. Do clarify the documentation, thank you Richard. Simon -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8599#comment:3 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler