[GHC] #7401: Can't derive instance for Eq when datatype has no constructor, while it is trivial do do so.
GHC
ghc-devs at haskell.org
Fri Aug 16 13:54:48 CEST 2013
#7401: Can't derive instance for Eq when datatype has no constructor, while it is
trivial do do so.
----------------------------------------------+----------------------------
Reporter: jpbernardy | Owner: monoidal
Type: feature request | Status: new
Priority: normal | Milestone: 7.8.1
Component: Compiler | Version: 7.6.1
Resolution: | Keywords: deriving
Operating System: Unknown/Multiple | Architecture:
Type of failure: GHC rejects valid program | Unknown/Multiple
Test Case: | Difficulty: Unknown
Blocking: | Blocked By:
| Related Tickets:
----------------------------------------------+----------------------------
Comment (by simonpj):
There was some follow-up email on ghc-devs about this. (But let's
accumulate comments here.) My summary
* If we have `EmptyDataDecls` then surely
{{{
data T deriving( Eq )
}}}
should work, just as well as standalone deriving
{{{
data T
deriving Eq T
}}}
The two must behave the same.
* Surely all the built-in classes (Eq, Show, Ord etc) should derive for
with `EmptyDataDecls` too.
* Haskell 2010 doesn't have `EmptyDataDecls` (eg the
[http://www.haskell.org/onlinereport/haskell2010/haskellch4.html#x10-680004.2
data type chapter] specifies n>0 constructors). But oddly the
[http://www.haskell.org/onlinereport/haskell2010/haskellch11.html#x18-18200011
deriving appendix] clause 6 says that nothing is derived if there are no
constructors. I think we should just ignore clause 6, since H2010 doesn't
have empty data types.
* It would be better if the `error "Void Eq"` mentioned the data type.
More like `error "Eq on empty data type T"`.
Might you do those things, Omer?
Simon
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/7401#comment:13>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list