[GHC] #8599: Deriving in associated data families ignores instance's constraints
GHC
ghc-devs at haskell.org
Fri Dec 27 01:58:31 UTC 2013
#8599: Deriving in associated data families ignores instance's constraints
-------------------------------------+------------------------------------
Reporter: mojojojo | Owner:
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 goldfire):
* component: Compiler => Documentation
Comment:
This is by design, though quite non-trivially.
The problem is caused by the confluence of two design decisions:
1. Associated data/newtype instances do not interact with any specified
context to the enclosing class instance.
2. As the manual says in section 7.5.1, "each constraint in the inferred
instance context must consist only of type variables, with no
repetitions." In the case at hand, the inferred context would be `Eq (DF'
a)`, which does not meet this criterion.
The fact in (1) does not seem to be documented anywhere, which is why I'm
relabeling this as a documentation bug. Changing this fact seems hard: do
we want the context to be inherited by all data constructors of an
associated data instance? How can the context interact with an associated
type instance (without substantially changing the way type families work)?
To me, the only place that the context should possibly be inherited is in
derived instances, as the original report suggests. But, even here, its
role would be unclear: is the context "fully-specified", like in a
standalone-deriving instance? What if a larger context is necessary? What
if a smaller one were sufficient? There are consistent points in this
design space, but choosing one and articulating it might be hard, and
somewhat arbitrary.
Thoughts? If someone agrees with relabeling this as a documentation bug, I
can update the stuff on data families when I return from holiday (Jan. 6).
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/8599#comment:2>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list