Modulequiet-0.2Haskell2010
Quiet
Generic deriving of Read / Show with no record labels.
Often one wants to create a newtype which has a convenient field
accessor like unUserId below, but that unfortunately makes the
Show instance which is derived overly verbose.
For example:
newtype UserId = UserId { unUserId :: String }
deriving (Read, Show)
show (UserId "simon")UserId {unUserId = "simon"}read "UserId {unUserId = \"simon\"}" :: UserIdUserId {unUserId = "simon"}
With DerivingVia Quiet you can have a Show instance which doesn't
print the field labels. It will render as if the unUserId accessor
wasn't present at all.
newtype UserId = UserId { unUserId :: String }
deriving (Generic)
deriving (Read, Show) via (Quiet UserId)
show (UserId "simon")UserId "simon"read "UserId \"simon\"" :: UserIdUserId "simon"
If you want to derive Read / Show without using DerivingVia then
you can use qreadPrec and qshowsPrec directly.
instance Read UserId where readPrec = qreadPrec
instance Show UserId where showsPrec = qshowsPrec
- 1 type
- 2 values
- Packagequiet-0.2
- Exports3
- LanguageHaskell2010
- LicenceBSD-3-Clause
- SourceQuiet.hs
This implements a quiet version of Text.Show.showsPrec which omits
labels for record fields when rendering constructors.
This implements a quiet version of readPrec which expects labels for record fields to be omitted when parsing constructors.