Copyright | (C) 2015-2017 Ryan Scott |
---|---|
License | BSD-style (see the file LICENSE) |
Maintainer | Ryan Scott |
Portability | Template Haskell |
Safe Haskell | None |
Language | Haskell2010 |
Exports functions to mechanically derive Show
, Show1
, and Show2
instances.
Synopsis
- deriveShow :: Name -> Q [Dec]
- deriveShowOptions :: ShowOptions -> Name -> Q [Dec]
- makeShowsPrec :: Name -> Q Exp
- makeShowsPrecOptions :: ShowOptions -> Name -> Q Exp
- makeShow :: Name -> Q Exp
- makeShowOptions :: ShowOptions -> Name -> Q Exp
- makeShowList :: Name -> Q Exp
- makeShowListOptions :: ShowOptions -> Name -> Q Exp
- deriveShow1 :: Name -> Q [Dec]
- deriveShow1Options :: ShowOptions -> Name -> Q [Dec]
- makeLiftShowsPrec :: Name -> Q Exp
- makeLiftShowsPrecOptions :: ShowOptions -> Name -> Q Exp
- makeLiftShowList :: Name -> Q Exp
- makeLiftShowListOptions :: ShowOptions -> Name -> Q Exp
- makeShowsPrec1 :: Name -> Q Exp
- makeShowsPrec1Options :: ShowOptions -> Name -> Q Exp
- deriveShow2 :: Name -> Q [Dec]
- deriveShow2Options :: ShowOptions -> Name -> Q [Dec]
- makeLiftShowsPrec2 :: Name -> Q Exp
- makeLiftShowsPrec2Options :: ShowOptions -> Name -> Q Exp
- makeLiftShowList2 :: Name -> Q Exp
- makeLiftShowList2Options :: ShowOptions -> Name -> Q Exp
- makeShowsPrec2 :: Name -> Q Exp
- makeShowsPrec2Options :: ShowOptions -> Name -> Q Exp
- data ShowOptions = ShowOptions {}
- defaultShowOptions :: ShowOptions
- legacyShowOptions :: ShowOptions
Show
deriveShow :: Name -> Q [Dec] Source #
Generates a ShowClass
instance declaration for the given data type or data
family instance.
deriveShowOptions :: ShowOptions -> Name -> Q [Dec] Source #
Like deriveShow
, but takes a ShowOptions
argument.
makeShowsPrec :: Name -> Q Exp Source #
Generates a lambda expression which behaves like showsPrec
(without
requiring a ShowClass
instance).
makeShowsPrecOptions :: ShowOptions -> Name -> Q Exp Source #
Like makeShowsPrec
, but takes a ShowOptions
argument.
makeShow :: Name -> Q Exp Source #
Generates a lambda expression which behaves like show
(without
requiring a ShowClass
instance).
makeShowOptions :: ShowOptions -> Name -> Q Exp Source #
Like makeShow
, but takes a ShowOptions
argument.
makeShowList :: Name -> Q Exp Source #
Generates a lambda expression which behaves like showList
(without
requiring a ShowClass
instance).
makeShowListOptions :: ShowOptions -> Name -> Q Exp Source #
Like makeShowList
, but takes a ShowOptions
argument.
Show1
deriveShow1 :: Name -> Q [Dec] Source #
Generates a Show1
instance declaration for the given data type or data
family instance.
deriveShow1Options :: ShowOptions -> Name -> Q [Dec] Source #
Like deriveShow1
, but takes a ShowOptions
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 :: ShowOptions -> Name -> Q Exp Source #
Like makeLiftShowsPrec
, but takes a ShowOptions
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 ShowClass
instance).
This function is not available with transformers-0.4
.
makeLiftShowListOptions :: ShowOptions -> Name -> Q Exp Source #
Like makeLiftShowList
, but takes a ShowOptions
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 :: ShowOptions -> Name -> Q Exp Source #
Like makeShowsPrec1
, but takes a ShowOptions
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 :: ShowOptions -> Name -> Q [Dec] Source #
Like deriveShow2
, but takes a ShowOptions
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 :: ShowOptions -> Name -> Q Exp Source #
Like makeLiftShowsPrec2
, but takes a ShowOptions
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 ShowClass
instance).
This function is not available with transformers-0.4
.
makeLiftShowList2Options :: ShowOptions -> Name -> Q Exp Source #
Like makeLiftShowList2
, but takes a ShowOptions
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 :: ShowOptions -> Name -> Q Exp Source #
Like makeShowsPrec2
, but takes a ShowOptions
argument.
This function is not available with transformers-0.4
.
ShowOptions
data ShowOptions Source #
Options that further configure how the functions in Text.Show.Deriving should behave.
ShowOptions | |
|
Instances
Eq ShowOptions Source # | |
Defined in Text.Show.Deriving.Internal (==) :: ShowOptions -> ShowOptions -> Bool # (/=) :: ShowOptions -> ShowOptions -> Bool # | |
Ord ShowOptions Source # | |
Defined in Text.Show.Deriving.Internal compare :: ShowOptions -> ShowOptions -> Ordering # (<) :: ShowOptions -> ShowOptions -> Bool # (<=) :: ShowOptions -> ShowOptions -> Bool # (>) :: ShowOptions -> ShowOptions -> Bool # (>=) :: ShowOptions -> ShowOptions -> Bool # max :: ShowOptions -> ShowOptions -> ShowOptions # min :: ShowOptions -> ShowOptions -> ShowOptions # | |
Read ShowOptions Source # | |
Defined in Text.Show.Deriving.Internal readsPrec :: Int -> ReadS ShowOptions # readList :: ReadS [ShowOptions] # readPrec :: ReadPrec ShowOptions # readListPrec :: ReadPrec [ShowOptions] # | |
Show ShowOptions Source # | |
Defined in Text.Show.Deriving.Internal showsPrec :: Int -> ShowOptions -> ShowS # show :: ShowOptions -> String # showList :: [ShowOptions] -> ShowS # |
defaultShowOptions :: ShowOptions Source #
ShowOptions
that match the behavior of the most recent GHC release.
legacyShowOptions :: ShowOptions Source #
ShowOptions
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 haveShow
constraints. Type variables of kind* -> *
are assumed to haveShow1
constraints. Type variables of kind* -> * -> *
are assumed to haveShow2
constraints. If this is not desirable, usemakeShowsPrec
or one of its cousins. - The
Show1
class had a different definition intransformers-0.4
, and as a result,deriveShow1
implements different instances for thetransformers-0.4
Show1
than it otherwise does. Also,makeLiftShowsPrec
andmakeLiftShowList
are not available when this library is built againsttransformers-0.4
, only 'makeShowsPrec1. - The
Show2
class is not available intransformers-0.4
, and as a result, neither are Template Haskell functions that deal withShow2
when this library is built againsttransformers-0.4
.