
#13592: Newtype type class with compiler generated instances -------------------------------------+------------------------------------- Reporter: Iceland_jack | Owner: (none) Type: feature request | Status: new Priority: normal | Milestone: Component: Compiler | Version: 8.0.1 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by Iceland_jack): The thing missing from that is the dependency, if I use [https://hackage.haskell.org/package/newtype-0.2/docs/Control- Newtype.html#v:ala ala] I can use {{{#!hs ala Sum foldMap [1,2] :: Num o => o }}} While with your formulation I get {{{#!hs ala Sum foldMap [1,2] :: (Coercible o o', Num o) => o }}} but it could certainly re-use `Coercible` {{{#!hs class Newtype n where type O n pack :: O n -> n pack = coerce default pack :: Coercible (O n) n => O n -> n unpack :: n -> O n unpack = coerce default unpack :: Coercible n (O n) => n -> O n }}} so that the compiler only needs to generate {{{#!hs instance Newtype (Sum a) where type O (Sum a) = a }}} -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/13592#comment:2 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler