
#12047: Users Guide: GeneralizedNewtypeDeriving derives “instance Num Int => Num Dollars” -------------------------------------+------------------------------------- Reporter: Iceland_jack | Owner: Type: task | Status: new Priority: normal | Milestone: Component: Documentation | Version: 7.10.3 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: Documentation | Unknown/Multiple bug | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Changes (by RyanGlScott): * component: Compiler => Documentation Comment: That section isn't saying that `newtype Dollars = Dollars Int deriving Num` literally derives an instance of the form `instance Num Int => Num Dollars`, but rather it generates an `instance Num Dollars` by starting with `Num Int` as the context, then simplifying as much as possible. In that example, since a `Num Int` instance exists, we can discharge that constraint and be left with `()`, giving us the `instance Num Dollars` that you actually get when you compile with `-ddump-deriv`. I agree that the wording in that section is a bit vague (it uses the phrase "Notationally" without going into much detail about what it really entails) and could stand to be clarified. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/12047#comment:3 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler