
#8827: Inferring Safe mode with GeneralizedNewtypeDeriving is wrong -------------------------------------+------------------------------------ Reporter: goldfire | Owner: Type: bug | Status: new Priority: normal | Milestone: 7.8.1 Component: Compiler | Version: 7.8.1-rc2 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Unknown/Multiple Type of failure: None/Unknown | Difficulty: Unknown Test Case: | Blocked By: Blocking: | Related Tickets: 8226, 8745 -------------------------------------+------------------------------------ Comment (by nomeata): May I throw the suggestion in comment:14 again into the ring? Most data types are exported with their constructors, so we want their users to `coerce` and GND as they wish; with that suggestion, no additional annotations are needed, and `coerce` can be replaced by hand-written code. Abstract type constructors would, under this proposal, not be coercible by default, but this can easily be enabled using `deriving` (even `instance deriving` anywhere where the corresponding manual code can be written). This is a variant of David’s suggestion (controlling roles in export lists) in that we correlate coercibility with constructor scope, but does not have the awkwardness of making the defining module’s export list special. In fact, it would quite precisely follow the guidance of “coerce (and GND) work exactly when you could write manual code for it”. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/8827#comment:27 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler