[GHC] #10598: DeriveAnyClass and GND don't work well together
GHC
ghc-devs at haskell.org
Tue May 24 00:14:31 UTC 2016
#10598: DeriveAnyClass and GND don't work well together
-------------------------------------+-------------------------------------
Reporter: osa1 | Owner: RyanGlScott
Type: bug | Status: new
Priority: normal | Milestone: 8.2.1
Component: Compiler | Version: 7.11
Resolution: | Keywords: Generics
Operating System: Unknown/Multiple | Architecture:
| Unknown/Multiple
Type of failure: None/Unknown | Test Case:
Blocked By: | Blocking:
Related Tickets: | Differential Rev(s):
Wiki Page: |
-------------------------------------+-------------------------------------
Comment (by oerjan):
As Ryan implies, Simon's suggestion seems precisely equivalent to
abolishing `DeriveAnyClass` altogether. And the entire point of that
extension is to extend `deriving` clauses to allow user-defined classes.
OK, so the class annotation idea is not backwards compatible across
actually adding those annotations. At least that would seem to need a
major version change. Maybe they could still be useful to enable warnings
if the program is implicitly using the non-recommended derivation type.
This could easily happen if a module lists the wrong GND/DAC language
extension.
Your `ToJSON` example is instructive, in that a programmer might very well
want either version, and in that there's already a problem ''today'' if
the module lists the wrong language extensions.
As for your last example, I meant for all of this to have no effect at all
on `data` types. But on the other hand, an annotation of `{-# GND #-}`
might strongly imply that a class is ''not'' designed to support DAC, and
so suggest a warning.
Which now makes me realize that it may be reasonable for some classes to
support both, at least if they are equivalent in result (and then,
probably more efficient with GND.)
It's getting pretty obvious here that some of my design goals are
inconsistent with each other. I'd suggest erring on the side of giving
warnings unless the user is being explicit.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/10598#comment:30>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list