[GHC] #8128: Standalone deriving fails for GADTs due to inaccessible code
GHC
ghc-devs at haskell.org
Tue Aug 13 18:41:34 CEST 2013
#8128: Standalone deriving fails for GADTs due to inaccessible code
----------------------------------------------+----------------------------
Reporter: adamgundry | Owner:
Type: bug | Status: new
Priority: normal | Milestone:
Component: Compiler (Type checker) | Version: 7.7
Resolution: | Keywords:
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 goldfire):
This seems impossible to do correctly, in the general case. For example:
{{{
type family F a
data Bar a where
B1 :: Bar Int
B2 :: Bar (F Bool)
deriving instance Eq (Bar Int)
}}}
The instance generated by the `deriving instance` will depend on the
instances for `F` that are in scope, which seems quite fragile. In
particular, if the instance for `Eq` were derived out of scope of any
instance for `F`, then the instance would pattern-match only on `B1`. If,
later (that is, in another module), we know that `F Bool` is `Int`, then
it seems we could get a pattern-match failure in the `Eq` instance.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/8128#comment:2>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list