
#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 monoidal): Haskell 2010 clearly has empty data decls. We've got in section 4.2.1 topdecl -> data [context =>] simpletype [= constrs] [deriving] Note that "= constrs" is in square brackets [] which denote optional part. There's also this part: "This declaration introduces a new type constructor T with zero or more constituent data constructors". Plus, the announcement of the standard contained a list of additions, including empty data declarations. If there's any contradicting information, I would call it a typo in the standard. However, there's a quirk: the deriving clause in H2010 is allowed only on nonempty data decls. I can't work on the ticket in this month - sorry. To the patch author: I think we should be consistent with Eq, Ord etc. One way would be removing cond_stdOK altogether. This should make conditions for standalone deriving and normal deriving completely equivalent, but it is overly permissive in regard to standard. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/7401#comment:16 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler