deriving-compat-0.2.1: Backports of GHC deriving extensions

Copyright(C) 2015-2016 Ryan Scott
LicenseBSD-style (see the file LICENSE)
MaintainerRyan Scott
PortabilityTemplate Haskell
Safe HaskellNone
LanguageHaskell2010

Text.Show.Deriving

Contents

Description

Exports functions to mechanically derive Show, Show1, and Show2 instances.

Synopsis

Show

deriveShow :: Name -> Q [Dec] Source #

Generates a Show instance declaration for the given data type or data family instance.

deriveShowOptions :: Options -> Name -> Q [Dec] Source #

Like deriveShow, but takes an Options argument.

makeShowsPrec :: Name -> Q Exp Source #

Generates a lambda expression which behaves like showsPrec (without requiring a Show instance).

makeShowsPrecOptions :: Options -> Name -> Q Exp Source #

Like makeShowsPrec, but takes an Options argument.

makeShow :: Name -> Q Exp Source #

Generates a lambda expression which behaves like show (without requiring a Show instance).

makeShowOptions :: Options -> Name -> Q Exp Source #

Like makeShow, but takes an Options argument.

makeShowList :: Name -> Q Exp Source #

Generates a lambda expression which behaves like showList (without requiring a Show instance).

makeShowListOptions :: Options -> Name -> Q Exp Source #

Like makeShowList, but takes an Options argument.

Show1

deriveShow1 :: Name -> Q [Dec] Source #

Generates a Show1 instance declaration for the given data type or data family instance.

deriveShow1Options :: Options -> Name -> Q [Dec] Source #

Like deriveShow1, but takes an Options argument.

makeLiftShowsPrec :: Name -> Q Exp Source #

Generates a lambda expression which behaves like liftShowsPrec (without requiring a Show1 instance).

This function is not available with transformers-0.4.

makeLiftShowsPrecOptions :: Options -> Name -> Q Exp Source #

Like makeLiftShowsPrec, but takes an Options argument.

This function is not available with transformers-0.4.

makeLiftShowList :: Name -> Q Exp Source #

Generates a lambda expression which behaves like liftShowList (without requiring a Show instance).

This function is not available with transformers-0.4.

makeLiftShowListOptions :: Options -> Name -> Q Exp Source #

Like makeLiftShowList, but takes an Options argument.

This function is not available with transformers-0.4.

makeShowsPrec1 :: Name -> Q Exp Source #

Generates a lambda expression which behaves like showsPrec1 (without requiring a Show1 instance).

makeShowsPrec1Options :: Options -> Name -> Q Exp Source #

Like makeShowsPrec1, but takes an Options argument.

Show2

deriveShow2 :: Name -> Q [Dec] Source #

Generates a Show2 instance declaration for the given data type or data family instance.

This function is not available with transformers-0.4.

deriveShow2Options :: Options -> Name -> Q [Dec] Source #

Like deriveShow2, but takes an Options argument.

This function is not available with transformers-0.4.

makeLiftShowsPrec2 :: Name -> Q Exp Source #

Generates a lambda expression which behaves like liftShowsPrec2 (without requiring a Show2 instance).

This function is not available with transformers-0.4.

makeLiftShowsPrec2Options :: Options -> Name -> Q Exp Source #

Like makeLiftShowsPrec2, but takes an Options argument.

This function is not available with transformers-0.4.

makeLiftShowList2 :: Name -> Q Exp Source #

Generates a lambda expression which behaves like liftShowList2 (without requiring a Show instance).

This function is not available with transformers-0.4.

makeLiftShowList2Options :: Options -> Name -> Q Exp Source #

Like makeLiftShowList2, but takes an Options argument.

This function is not available with transformers-0.4.

makeShowsPrec2 :: Name -> Q Exp Source #

Generates a lambda expression which behaves like showsPrec2 (without requiring a Show2 instance).

This function is not available with transformers-0.4.

makeShowsPrec2Options :: Options -> Name -> Q Exp Source #

Like makeShowsPrec2, but takes an Options argument.

This function is not available with transformers-0.4.

Options

newtype Options Source #

Options that further configure how the functions in Text.Show.Deriving should behave.

Constructors

Options 

Fields

  • ghc8ShowBehavior :: Bool

    If True, the derived Show, Show1, or Show2 instance will not surround the output of showing fields of unlifted types with parentheses, and the output will be suffixed with hash signs (#).

defaultOptions :: Options Source #

Options that match the behavior of the most recent GHC release.

legacyOptions :: Options Source #

Options that match the behavior of the installed version of GHC.

deriveShow limitations

Be aware of the following potential gotchas:

  • Type variables of kind * are assumed to have Show constraints. Type variables of kind * -> * are assumed to have Show1 constraints. Type variables of kind * -> * -> * are assumed to have Show2 constraints. If this is not desirable, use makeShowsPrec or one of its cousins.
  • The Show1 class had a different definition in transformers-0.4, and as a result, deriveShow1 implements different instances for the transformers-0.4 Show1 than it otherwise does. Also, makeLiftShowsPrec and makeLiftShowList are not available when this library is built against transformers-0.4, only 'makeShowsPrec1.
  • The Show2 class is not available in transformers-0.4, and as a result, neither are Template Haskell functions that deal with Show2 when this library is built against transformers-0.4.