quiet

Generic deriving of Read/Show with no record labels. https://github.com/jacobstanley/quiet#readme

This package is not currently in any snapshots. If you're interested in using it, we recommend adding it to Stackage Nightly. Doing so will make builds more reliable, and allow stackage.org to host generated Haddocks.

BSD-3-Clause licensed by Jacob Stanley
Maintained by jacob@stanley.io

quiet

Generic deriving of Read / Show with no record labels.

Hackage Travis

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)
ghci> show (UserId "simon")
UserId {unUserId = "simon"}
ghci> read "UserId {unUserId = \"simon\"}" :: UserId
UserId {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)
ghci> show (UserId "simon")
UserId "simon"
ghci> read "UserId \"simon\"" :: UserId
UserId "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

Changes

Changelog for quiet

Unreleased changes