[GHC] #10598: DeriveAnyClass and GND don't work well together
GHC
ghc-devs at haskell.org
Tue Jul 14 17:00:44 UTC 2015
#10598: DeriveAnyClass and GND don't work well together
-------------------------------------+-------------------------------------
Reporter: osa1 | Owner:
Type: bug | Status: new
Priority: normal | Milestone:
Component: Compiler | Version: 7.11
Resolution: | Keywords:
Operating System: Unknown/Multiple | Architecture:
Type of failure: None/Unknown | Unknown/Multiple
Blocked By: | Test Case:
Related Tickets: | Blocking:
| Differential Revisions:
-------------------------------------+-------------------------------------
Comment (by osa1):
Sorry if this is a digression, but DAC just doesn't make sense to me. I
think the only place it's mentioned in the user manual is here:
https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/deriving.html
and it's just saying "With -XDeriveAnyClass you can derive any other
class. The compiler will simply generate an empty instance."
What I found confusing is:
1. It says "derive any other class", which to me means that GHC first
tries other mechanisms to derive implementations, and uses DAC as a last
resort, because of the word "other".
E.g. if we have DF and DAC and we're trying to derive Functor, DF should
always be used. If we're trying to derive something that's not supported
by any other enabled extension, we should try DAC.
2. It says "the compiler will simply generate an empty instance". This
works for all typeclasses, so in a sense this is most general deriving
mechanism. So to me it seems like this should be tried last, not first,
when we have multiple deriving mechanisms that we can use for a particular
`deriving (..)` statement. E.g. it should start with most specific
deriving mechanism and move to more general ones as they fail.
---
@simonpj,
> Once that is nailed down, it'll become clear what to do for
DeriveAnyClass, I think.
If I understand correctly, you mean we should do something like this:
1. Update semantics of MINIMAL to make generic implementations counted.
2. Modify DAC to make working iff all MINIMALs have definitions.
3. Also fix problems with docs and warnings on the way.
Does that sound right?
Also, it seems like DeriveAnyClass is broken in some other ways(#9821,
#9968). Maybe I can fix those on the way.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/10598#comment:12>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list