text-show
Efficient conversion of values into Text
https://github.com/RyanGlScott/text-show
LTS Haskell 22.33: | 3.10.5@rev:2 |
Stackage Nightly 2024-09-07: | 3.10.5@rev:2 |
Latest on Hackage: | 3.10.5@rev:2 |
text-show-3.10.5@sha256:54d1277346a2a677443a0a97e39c161faeac803ce1f84efcf8ce0da0019ac62a,18495
Module documentation for 3.10.5
- TextShow
- TextShow.Control
- TextShow.Data
- TextShow.Data.Array
- TextShow.Data.Bool
- TextShow.Data.ByteString
- TextShow.Data.Char
- TextShow.Data.Complex
- TextShow.Data.Data
- TextShow.Data.Dynamic
- TextShow.Data.Either
- TextShow.Data.Fixed
- TextShow.Data.Floating
- TextShow.Data.Functor
- TextShow.Data.Integral
- TextShow.Data.List
- TextShow.Data.Maybe
- TextShow.Data.Monoid
- TextShow.Data.OldTypeable
- TextShow.Data.Ord
- TextShow.Data.Proxy
- TextShow.Data.Ratio
- TextShow.Data.Semigroup
- TextShow.Data.Text
- TextShow.Data.Tuple
- TextShow.Data.Type
- TextShow.Data.Typeable
- TextShow.Data.Version
- TextShow.Data.Void
- TextShow.Debug
- TextShow.Foreign
- TextShow.Foreign.C
- TextShow.Foreign.Ptr
- TextShow.Functions
- TextShow.GHC
- TextShow.Generic
- TextShow.Numeric
- TextShow.System
- TextShow.System.Exit
- TextShow.System.IO
- TextShow.System.Posix
- TextShow.TH
- TextShow.Text
text-show
text-show
offers a replacement for the Show
typeclass intended for use with Text
instead of String
s. This package was created in the spirit of bytestring-show
.
For most uses, simply importing TextShow
will suffice:
module Main where
import TextShow
main :: IO ()
main = printT (Just "Hello, World!")
See also the naming conventions page.
Support for automatically deriving TextShow
instances can be found in the TextShow.TH
and TextShow.Generic
modules.
Scope of the library
text-show
only provides instances for data types in the following packages:
This policy is in place to keep text-show
’s dependencies reasonably light. If
you need a TextShow
instance for a library that is not in this list, it may
be covered by the
text-show-instances
library.
Changes
3.10.5 [2024.04.20]
- Support building with GHC 9.10.
- Ensure that the
TextShow
instance forTypeRep
properly displays unboxed tupleTypeRep
values. - Add a
TextShow
instance forHpcFlags
(inTextShow.GHC.RTS.Flags
) when building with GHC 9.10 or later.
3.10.4 [2023.08.06]
- Support building with GHC 9.8.
- Ensure that the
TextShow
instance forTypeRep
properly displaysTypeRep []
as"[]"
. - Ensure that the
TextShow
instance forTypeRep
properly handles partial applications of tuple constructors (e.g.,(,) Int
). - Support deriving
TextShow(1)(2)
instances for data types with fields of typeInt64#
orWord64#
on GHC 9.8 or later. - When generating
TextShow(1)(2)
instances withTextShow.TH
using GHC 9.8 or later, data types that have fields of typeInt{8,16,32,64}#
orWord{8,16,32,64}#
will be printed using extended literal syntax, mirroring corresponding changes introduced in GHC 9.8 (see https://github.com/ghc-proposals/ghc-proposals/pull/596).
3.10.3 [2023.06.03]
- Support building with
QuickCheck-2.14.3
in the test suite.
3.10.2 [2023.03.05]
- Allow building with GHC 9.6.
- Add
TextShow
instances forSomeChar
(if building withbase-4.16
or later), as well asSNat
,SSymbol
, andSChar
(if building withbase-4.18
or later).
3.10.1 [2023.02.27]
- Support
th-abstraction-0.5.*
.
3.10 [2022.10.05]
-
The instances in
TextShow.FromStringTextShow
module have been scaled back somewhat for forward compatibility with Core Libraries proposal #10, which will add quantifiedShow
superclasses toShow1
andShow2
:-
FromStringShow
andFromTextShow
no longer haveShow1
orTextShow1
instances. If you want to derive instances ofShow1
orTextShow1
via a newtype, useFromStringShow1
orFromTextShow1
instead. -
The
Show
instances forFromTextShow1
andFromTextShow2
have had their instance contexts changed to accommodate the new superclasses inShow1
andShow2
:-instance (TextShow1 f, TextShow a) => Show (FromTextShow1 f a) +instance (TextShow1 f, Show a) => Show (FromTextShow1 f a) -instance (TextShow2 f, TextShow a, TextShow b) => Show (FromTextShow2 f a b) +instance (TextShow2 f, Show a, Show b) => Show (FromTextShow2 f a b)
While these instances do technically work, they are probably not what you would have in mind if you wanted to derive a
Show
instance purely in terms ofTextShow
classes. For this reason, if you want to derive an instance ofShow
via a newtype, useFromTextShow
instead. -
By similar reasoning, the
Show1
instance forFromTextShow2
has had its instance context changed:-instance (TextShow2 f, TextShow a) => Show1 (FromTextShow2 f a) +instance (TextShow2 f, Show a) => Show1 (FromTextShow2 f a)
-
By similar reasoning, the
TextShow
instances forFromStringShow1
andFromStringShow2
, as well as theTextShow1
instance forFromStringShow2
, have had their instance contexts changed:-instance (Show1 f, Show a) => TextShow (FromStringShow1 f a) +instance (Show1 f, TextShow a) => TextShow (FromStringShow1 f a) -instance (Show2 f, Show a, Show b) => TextShow (FromStringShow2 f a b) +instance (Show2 f, TextShow a, TextShow b) => TextShow (FromStringShow2 f a b) -instance (Show2 f, Show a) => TextShow1 (FromStringShow2 f a) +instance (Show2 f, TextShow a) => TextShow1 (FromStringShow2 f a)
-
-
The
TextShow{1,2}
classes now have quantified superclasses:class (forall a. TextShow a => TextShow (f a)) => TextShow1 f where ... class (forall a. TextShow a => TextShow1 (f a)) => TextShow2 f where ...
This mirrors corresponding changes made to
Show1
andShow2
in thebase
library. See https://github.com/haskell/core-libraries-committee/issues/10.Because of this change, any code that defines a
TextShow1
instance for a data type without a correspondingTextShow
instance will no longer compile, so you may need to define moreTextShow
instances to adapt to this change. Similarly,TextShow2
instances will now also require correspondingTextShow
andTextShow1
instances. -
The
GTextShow*
classes inTextShow.Generic
, which power generic derivation ofTextShow
andTextShow1
instances, have been split up to facilitate the addition of a quantified superclass toTextShow1
. Moreover, theShowFuns*
data types, theZero
data type, and the `One data type have been removed, as they are no longer necessary in light of this split.Although this is a breaking API change, the changes should be invisible to most users of the module, especially if your code only uses it to derive
TextShow{,1}
instances. -
Add a
TextShow
instance forByteArray
fromData.Array.Byte
when building withbase-4.17.0.0
or later.
3.9.7 [2022.05.28]
- Allow the test suite to build with GHC 9.4.
- Allow building with
transformers-0.6.*
.
3.9.6 [2022.01.14]
text-show
no longer depends oninteger-gmp
when built with GHC 9.0 or later. When building with older versions of GHC, theinteger-gmp
dependency can be toggled by disabling theinteger-gmp
cabal
flag.
3.9.5 [2022.01.03]
- Work around a GHC 8.0–specific issue in which GHC’s simplifier ticks would become exhausted, causing compilation to fail.
3.9.4 [2021.12.26]
- Allow the test suite to build with
text-2.0.*
andtransformers-compat-0.7.1
.
3.9.3 [2021.10.31]
- Allow building with GHC 9.2.
- Drop support for GHC 7.4 and 7.6.
- Add
TextShow(1)
instances forSolo
when building withghc-prim-0.7
or later. - Support deriving
TextShow(1)(2)
instances for data types with fields of typeInt32#
orWord32#
on GHC 8.2 or later.
3.9.2 [2021.08.30]
- Require
generic-deriving-1.14.1
or later in the test suite.
3.9.1 [2021.08.29]
- Require
base-orphans-0.8.5
or later in the test suite.
3.9 [2020.10.03]
- Allow building with GHC 9.0.
- Remove
TextShow(1)
instances forData.Semigroup.Option
, which is deprecated as ofbase-4.15.0.0
. - Fix a bug in which
deriveTextShow{1,2}
would needlessly reject data types whose last type parameters appear as oversaturated arguments to a type family.
3.8.5 [2020.02.28]
- Import from
GHC.Exts
, notGHC.Prim
.
3.8.4 [2020.01.28]
- Update the
TextShow(1)
instances forDown
andThreadId
to match their implementations inbase-4.14
.
3.8.3 [2019.11.06]
- Use
base-compat-batteries-0.11.0
to define instances for(:~:)
back tobase-4.5
and instances for(:~~:)
back tobase-4.9
.
3.8.2 [2019.05.02]
- Make the
TextShow
instances forUArray
andFixed
use the correct precedence onbase-4.13
or later. - Support deriving
TextShow(1)(2)
instances for data types with fields of typeInt8#
,Int16#
,Word8#
, orWord16#
on GHC 8.8 or later.
3.8.1 [2019.04.26]
- Support
th-abstraction-0.3
or later.
3.8 [2019.03.19]
- Remove the
TextShow I16
instance fromTextShow.Data.Text
. The usefulness of this instance was dubious at best, and moreover, it was actively causing issues when buildingtext-show
withreflex-platform
(see #40).
3.7.5 [2018.10.07]
- Actually make
showbEFloat
’s behavior match that ofshowEFloat
inbase-4.12
. - Remove uses of
AutoDeriveTypeable
, since it is now deprecated. (As a result, some things which used to haveTypeable
instances on GHC 7.8 no longer do, but I’m choosing not to be bothered by this unless someone shouts.)
3.7.4 [2018.07.03]
- Add
FromGeneric
andFromGeneric1
newtype adapters toTextShow.Generic
. These are suitable for use withDerivingVia
, and provide a convenient way to obtainGeneric(1)
-based defaults forTextShow(1)
instances. - Add
TextShow(1)
instances forData.Monoid.Ap
onbase-4.12
or later. - Make
showbEFloat
’s behavior match that ofshowEFloat
inbase-4.12
.
3.7.3 [2018.04.07]
- Use
base-compat-batteries
. - Add a
TextShow FixIOException
instance onbase-4.11
or later.
3.7.2 [2018.03.08]
- Depend on
quickcheck-instances-0.3.18
or later.
3.7.1 [2017.12.29]
- Don’t define a
TextShow GCStats
instance on GHC 8.4 or later, asGCStats
has been removed frombase
. This fixes the build on GHC 8.4.
3.7 [2017.12.07]
- Use
EmptyCase
on GHC 7.8 or later forTextShow(1)
instances for empty data types that are derived usingTextShow.Generic
. - Derived
TextShow(1)(2)
instances (usingTextShow.TH
) will now force their argument instead of simplyerror
ing. - Add
emptyCaseBehavior
toOptions
, which configures whether derived instances (usingTextShow.TH
) for empty data types should use theEmptyCase
extension (this is disabled by default).
3.6.2 [2017.06.18]
- Drop support for GHC 7.0 and 7.2
- Require
QuickCheck-2.10
/quickcheck-instances-0.13.6
or later
3.6 [2017.04.22]
- Introduce some ‘TextShow’ instances for datatypes added in
base-4.10.0.0
:CBool
(fromForeign.C.Types
)CBlkSize
,CBlkCnt
,CClockId
,CFsBlkCnt
,CId
,CKey
, andCTimer
(fromSystem.Posix.Types
)CompactionFailed
(fromControl.Exception
)(:~~:)
(fromData.Type.Equality
)TypeRep
andSomeTypeRep
(fromType.Reflection
)
- Remove most monomorphic
TextShow
functions, as their utility is questionable, and their maintenance burden is undeniable - Add
showbCommaSpace
,showtCommaSpace
, andshowtlCommaSpace
toTextShow
. This appears quite frequently in derivedTextShow
instances, so it is likely worthwhile to define it once. - Rename
showbVersionConcrete
toshowbVersion
inTextShow.Data.Version
- Add
SPECIALIZE
pragmas forshowbEFloat
,showbFFloat
, andshowbGFloat
inTextShow.Data.Floating
, mirroring the ones inNumeric
- Generalize the kind of the last type parameter for the
TextShow (Const a b)
instance, which previously had been defaulted to*
- Refactor test suite
3.4.1.1 [2016.11.07]
- Require
criterion-1.1.4
or later. This allows the benchmarks to be run on older versions of GHC.
3.4.1 [2016.10.20]
- Require
QuickCheck-2.9
or later - Fix bug in which infix record selectors weren’t shown with parentheses
3.4
- The default definitions of
showt
andshowtl
were changed toshowtPrec 0
andshowtlPrec 0
, respectively deriveTextShowOptions
,deriveTextShow1Options
, andderiveTextShow2Options
added toTextShow.TH
, which allow further configuration of howTextShow(1)(2)
instances should be derived using the newOptions
data type.Options
itself containsGenTextMethods
, which configures whether manual implementations ofTextShow
should implement the methods that return strict and lazyText
.- The
defaultOptions
usesSometimesTextMethods
, which only implements theText
-returning methods if the datatype contains only nullary constructors (i.e., it is an enumeration type). For example,deriveTextShow = deriveTextShowOptions defaultOptions
. One can also chooseAlwaysTextMethods
orNeverTextMethods
instead.
- The
- The internals of
TextShow.Generic
were refactored so that is possible to generically deriveshowbPrec
,showtPrec
, andshowtlPrec
(which useBuilder
, strictText
, and lazyText
, respectively). Before, only generic derivation ofshowbPrec
was possible, and all other generic functions were defined in terms ofshowbPrec
.- The internal class
GTextShow
was split up intoGShowB
,GShowT
, andGShowTL
, depending on what type it returns. - As a result, functions like
genericShowtPrec
might be faster than before if they are showing something like an enumeration type, since they no longer construct an intermediateBuilder
. On the other hand, they might be slower if they are showing a constructor with many fields, since they will now be appending lots ofText
s. If so, make sure to switch togenericShowbPrec
and convert the finalBuilder
toText
instead.
- The internal class
- Added
showtParen
,showtSpace
,showtlParen
,showtlSpace
,liftShowtPrec
,liftShowtPrec2
,liftShowtlPrec
, andliftShowtlPrec2
toTextShow
- Added
showtPrecToShowbPrec
,showtlPrecToShowbPrec
,showtToShowb
,showtlToShowb
,showbPrecToShowtPrec
,showbPrecToShowtlPrec
,showbToShowt
, andshowbToShowtl
toTextShow
- Added
showtListWith
andshowtlListWith
toTextShow.Data.List
- Added
Data
instance forConType
inTextShow.Generic
- Require
generic-deriving-1.11
or later
3.3
- Refactored the internals of
TextShow.Generic
to avoid the use of proxies. - Made benchmark suite more comprehensive, including benchmarks for showing an enumeration type
- Microoptimization in derived
TextShow1/2
instances involvingTextShow.TH
- Allow building with
QuickCheck-2.9
- Fix GHC HEAD build
3.2.2
- Added benchmarks
3.2.1
- Fixed compilation on GHC 8.0
3.2
- Rewrote
TextShow.Generic
to enable more code reuse. TheGTextShow1
andGTextShow1Con
classes were eliminated, andGTextShow
andGTextShowCon
were redesigned to be able to generically implement bothshowbPrec
andliftShowbPrec
. The latter two classes now take an additionalarity
type parameter which isZero
ifTextShow
is being derived andOne
isTextShow1
is being derived.
3.1
- Made the derived
TextShow
output of record datatypes match that ofShow
in GHC 8.0 (now that Trac #2530 has been reverted) - Fixed GHC 8.0 build (again)
3.0.1
- Added the
TextShow.GHC.Stack
module, which providesTextShow
instances forCallStack
andSrcLoc
onbase-4.8.1
and up. - Fix Haddock rendering error
3
-
GHC 8.0 support
-
The functions
showt
,showtl
,showtPrec
,showtlPrec
,showtList
, andshowtlList
are now part of theTextShow
class. This was done to allow overriding their definitions with more efficient versions specifically for strict or lazyText
. (Currently, noTextShow
instance in thetext-show
package does this, but this may change in the future.) -
Added the
TextShow.Data.Functor.Compose
,TextShow.Data.Functor.Product
,TextShow.Data.Functor.Sum
, andTextShow.Data.Semigroup
modules -
Added
TextShow
instance forTypeError
inTextShow.Control.Exception
(GHC 8.0+) -
Added
TextShow
instances forTrName
andModule
inTextShow.Data.Typeable
(GHC 8.0+) -
Added
Lift
instances for the datatypes inTextShow
andTextShow.Generic
-
Renamed the class methods of
TextShow1
andTextShow2
to be consistent with the naming conventions oftransformers-0.5
. They following were renamed:showbPrecWith
→liftShowbPrec
showbPrecWith2
→liftShowbPrec2
makeShowbPrecWith
→makeLiftShowbPrec
makeShowbPrecWith2
→makeLiftShowbPrec2
genericShowbPrecWith
→genericLiftShowbPrec
In addition, many other monomorphic functions from the various
TextShow
submodules were also renamed to be consistent with the newlift-
prefix. -
showsToShowb
andshowbToShows
now only convert functions that ignore precedence (i.e., of typea -> ShowS
ora -> Builder
). Their former role has been given to the new functionsshowsPrecToShowbPrec
andshowbPrecToShowsPrec
-
Added
FromStringShow1
,FromTextShow1
,FromStringShow2
, andFromTextShow2
, which allow defining stringShow1
/Show2
instances in terms ofTextShow1
/TextShow2
instances, and vice versa. Be aware that many of these instances cannot be provided if you are usingtranformers-0.4
, since its version ofData.Functor.Classes
uses a very differenltly designedShow1
typeclass (and does not haveShow2
at all). -
Rewrote
TextShow.TH
’s type inferencer. This avoids a nasty GHC 7.8 bug, and it allowsTextShow(1)(2)
to be derived for more datatypes that can only be expressed with-XTypeInType
enabled. -
Reworked internals of
TextShow.Generic
. Empty datatypes can now be have genericTextShow
andTextShow1
instances.
2.1.2
- Fixed GHC 7.10.3 build
- Extended
TextShow.Generic
to allowgenericShowbPrec
(and friends) to be used onGeneric
datatypes withChar#
,Double#
,Float#
,Int#
, andWord#
argument types, just like stringShow
does - Added
Generic1
instances forFromStringShow
andFromTextShow
- Added
TextShow
instances forUChar
,UDouble
,UFloat
,UInt
, andUWord
inTextShow.GHC.Generics
2.1.1
- Restore support for
semigroups-0.16.1
2.1
- Require
semigroups
>= 0.17 - Added
showsToShowb
andshowbToShows
toTextShow
- Added
TextShow1 FromStringShow
instance - Added
showbGiveGCStats
,showbDoCostCentres
,showbDoHeapProfile
, andshowbDoTrace
toTextShow.GHC.RTS.Flags
if usingbase-4.8.2
or later - Exported
showbDownPrecWith
on earlier versions of GHC - Fixed mistakes in TH error output
- Make
Proxy
,Coercion
, and(:~:)
instances poly-kinded - Changed implementation of
showbByteStringStrict
,showbByteStrictLazy(Prec)
,showbShortByteString
(inTextShow.Data.ByteString
),showbThreadIdPrec
(inTextShow.Control.Concurrent
),showbEvent
, andshowbFdKeyPrec
(inTextShow.GHC.Event
) to avoid usingString
s as an intermediary
2
- Changed the top-level module name from
Text.Show.Text
toTextShow
, since the former was extremely verbose without much benefit. As a result, this will break all existing code that depends ontext-show
. - Several typeclasses and functions were renamed so as to not to clash with the
Prelude
:Show
→TextShow
Show1
→TextShow1
Show2
→TextShow2
show
→showt
showLazy
→showtl
showPrec
→showtPrec
showPrecLazy
→showtlPrec
showList
→showtList
showListLazy
→showtlList
print
→printT
printLazy
→printTL
hPrint
→hPrintT
hPrintLazy
→hPrintTL
GShow
→GTextShow
GShow1
→GTextShow1
genericShow
→genericShowt
genericShowLazy
→genericShowtl
genericShowPrec
→genericShowtPrec
genericShowPrecLazy
→genericShowtlPrec
genericShowList
→genericShowtList
genericShowListLazy
→genericShowtlList
genericPrint
→genericPrintT
genericPrintLazy
→genericPrintTL
genericHPrint
→genericHPrintT
genericHPrintLazy
→genericHPrintTL
deriveShow
→deriveTextShow
deriveShow1
→deriveTextShow1
deriveShow2
→deriveTextShow2
mkShow
→makeShowt
mkShowLazy
→makeShowtl
mkShowPrec
→makeShowtPrec
mkShowPrecLazy
→makeShowtlPrec
mkShowList
→makeShowtList
mkShowListLazy
→makeShowtlList
mkShowb
→makeShowb
mkShowbPrec
→makeShowbPrec
mkShowbList
→makeShowbList
mkPrint
→makePrintT
mkPrintLazy
→makePrintTL
mkHPrint
→makeHPrintT
mkHPrintLazy
→makeHPrintTL
mkShowbPrecWith
→makeShowbPrecWith
mkShowbPrec1
→makeShowbPrec1
mkShowbPrecWith2
→makeShowbPrecWith2
mkShowbPrec2
→makeShowbPrec2
trace
→tracet
traceLazy
→tracetl
traceId
→tracetId
traceIdLazy
→tracetlId
traceShow
→traceTextShow
traceShowId
→traceTextShowId
traceStack
→tracetStack
traceStackLazy
→tracetlStack
traceIO
→tracetIO
traceIOLazy
→tracetlIO
traceM
→tracetM
traceMLazy
→tracetlM
traceShowM
→traceTextShowM
traceEvent
→tracetEvent
traceEventLazy
→tracetlEvent
traceEventIO
→travetEventIO
traceEventIOLazy
→tracetlEventIO
traceMarker
→tracetMarker
traceMarkerLazy
→tracetlMarker
traceMarkerIO
→tracetMarkerIO
traceMarkerIOLazy
→tracetlMarkerIO
genericTraceShow
→genericTraceTextShow
genericTraceShowId
→genericTraceTextShowId
genericTraceShowM
→genericTraceTextShowM
mkTraceShow
→makeTraceTextShow
mkTraceShowId
→makeTraceTextShowId
mkTraceShowM
→makeTraceTextShowM
- Added
TextShow Lifetime
instance inTextShow.GHC.Event
(if usingbase-4.8.1.0
or later) - Generalized
tracetM
,tracetlM
, andtraceTextShowM
to use anApplicative
constraint instead ofMonad
- Fixed a bug in which the
TextShow(1)
instances forProxy
,(:~:)
, andCoercion
didn’t use-XPolyKinds
- Fixed a bug in the Template Haskell deriver which would cause
deriveTextShow
to fail on type parameters with sufficiently high kinds
1
- The
Show1
class has been completely overhauled.Show1
now uses the functionshowbPrecWith
, which takes as an argument a function of typeInt -> a -> Builder
to show occurrences of the type parameter (instead of requiring the type parameter to be aShow
instance). This matches the new implementation ofShow1
in the next version oftransformers
. A similarShow2
class (with the functionshowbPrecWith2
) was also added. - As a consequence,
Show1
instances should no longer be defined in terms ofshowbPrec
; rather,Show
instances should be defined in terms ofshowbPrecWith
orshowbPrecWith2
, andShow1
instances can be defined in terms ofshowbPrecWith2
. - The
showbPrec1
function is no longer a class method ofShow1
, but is now a standalone function defined in terms ofshowbPrecWith
.showbPrec1
can be useful for definingShow
instances. A similarshowbPrec2
function was also added. - The monomorphic functions in the many submodules of this package have been generalized (where possible) to use
Show1
andShow2
instances. These functions have-PrecWith
and-PrecWith2
suffixes, respectively. - Because of the generality of the new
showPrecWith
function,Show1
instances are now possible forRatio
,Alt
,Rec1
,M1
,(:+:)
,(:*:)
, and(:.:)
. - Removed many silly instances for
FromStringShow
andFromTextShow
, since they’ll never be used in the ways suggested by those instances to begin with. - The Template Haskell engine has been completely overhauled. Deriving
Show1
andShow2
instances are now possible using thederiveShow1
andderiveShow2
functions. See the documentation inText.Show.Text.TH
for more details. In addition, themkShowbPrecWith
,mkShowbPrec1
,mkShowbPrecWith2
, andmkShowbPrec2
functions were added. - Removed the ability to call
deriveShow
ormkShowbPrec
(or other functions prefixed withmk-
) using a data family name. This is considered a misfeature. If you want to deriveShow
for data family instances, use the correspondingdata instance
ornewtype instance
constructor name as an argument instead. - Removed
PragmaOptions
,deriveShowPragmas
,defaultInlineShowbPrec
,defaultInlineShowb
, anddefaultInlineShowbList
, as it was impossible to make Template Haskell-generated pragmas work consistently across different versions of GHC. If you really want to useINLINE
andSPECIALIZE instance
pragmas with your Template Haskell-generated code, create manual instances withmkShowbPrec
and family. Show1
instances can now be created generically using thegenericShowbPrecWith
function inText.Show.Text.Generics
. AgenericShowbPrec1
was also added.- Added
generic-deriving
as a dependency, which allows generics-related code to be exported on more versions of GHC ConType
(inText.Show.Text.Generics
) now has anInf String
constructor instead ofInf Builder
. As a result,ConType
now always anEq
andOrd
instance, and aRead ConType
instance was added.Typeable
instances for the promoted data constructors'FromStringShow
and'FromTextShow
- Added
showbFPFormat
toText.Show.Text.Data.Floating
- Revamped test suite
0.8.1.1
- Retroactive
CHANGELOG
update
0.8.1
- Fix test suite build with older versions of
QuickCheck
0.8
- Exported
formatRealFloatB
andformatRealFloatAltB
fromText.Show.Text.Data.Floating
. ReexportedFPFormat
(fromtext
) in the same module, and added aText
Show
instance for it. - The
Show
instance forRatio a
now only requires aShow a
constraint if usingbase-4.4.0.0
or later (if usingbase-4.3.0.0
, it requires a(Show a, Integral a)
constraint) - Added
showbSingPrec
toText.Show.Text.GHC.TypeLits
(if usingbase-4.6
) - Modules which were previously exported only if using a recent-enough version of GHC/
base
(e.g.,Text.Show.Text.GHC.Generics
) are now always exposed. If the functionality that the module provides is not available on a given version of GHC/base
, the module will not expose anything. - Bump lower version bounds of
text
to 0.11.1 due to reexportingFPFormat
- Added
showbUnicodeException
,showbI16Prec
,showbDecodingPrec
, andshowbSizePrec
functions (and correspondingShow
instances) toText.Show.Text.Data.Text
- Made
GShow
inText.Show.Text.Generics
poly-kinded - The Template Haskell deriver (and
GShow
) now handles “infix” data constructors that are applied as prefix correctly (e.g.,data Amp a = (:&) a a
) - The Template Haskell deriver now handles showable unlifted types (
Char#
,Double#
,Float#
,Int#
, andWord#
) correctly on GHC 7.11 and later - The Template Haskell derive now does not parenthesize record types regardless of precedence on GHC 7.11 and later
- Fixed build on GHC 7.2
- Changed test-suite to use
hspec
, which allows for it to be built on GHC 7.0 and 7.2
0.7.0.1
- Disabled
print
-related tests, as they sporadically break referential transparency for unknown reasons - Fixed build on Windows
0.7
- Added
showbConstPrec
(and correspondingShow
andShow1
instances forConst
) toText.Show.Text.Control.Applicative
- Added
showbUArrayPrec
(and correspondingShow
instance forUArray
s) andshowbIArrayPrec
toText.Data.Text.Data.Array
. - Renamed
showbListDefault
toshowbListWith
to match howText.Show
names it - Exposed
showbShortByteString
with all versions ofbytestring
by using thebytestring-builder
package - Corrected the
Show
instance forLexeme
(inText.Show.Text.Text.Read.Lex
) - Fixed
TypeRep
output on GHC 7.10 and later - Removed
LitChar
andLitString
fromText.Show.Text.Data.Char
, as they were not as useful as I had imagined. - Removed the deprecated
replicateB
function Typable
instances forShow
,Show1
, andGShow
(with GHC 7.8 and later)Typeable
instance forConType
- Only derive
Eq
andOrd
forConType
if a recent-enough version oftext
is used - Changed the implementations of some functions in
Text.Show.Text.Debug.Trace
to useByteString
s instead ofString
s
0.6.0.1
- Forgot to include some header files in
text-show.cabal
0.6
deriveShow
can now construct instances for data families, using either the data family name or a data instance constructor as an argument. See the documentation inText.Show.Text.TH
for more details.- Fixed a bug in which infix backticked data constructors (e.g.,
data Add = Int `Plus` Int
) would not be shown correctly. - Fixed typo in
Text.Show.Text.GHC.RTS.Flags
- Removed the phantom-type detecting mechanism with
template-haskell-2.9.0.0
or higher. This method of finding phantom types is intrinsically flawed and is not usable on older GHCs. - Added generics support with the
Text.Show.Text.Generic
andText.Show.Text.Debug.Trace.Generic
modules - Deprecated
replicateB
in favor oftimesN
from thesemigroups
library - Added
FromTextShow
toText.Show.Text
, which admits aString
Show
instance for any data type with aText
Show
instance (the counterpart ofFromStringShow
) - Added
Monoid
andSemigroup
instances forFromStringShow
,Semigroup
instance forLitString
,IsChar
instance forLitChar
, andIsString
instance for[LitChar]
- Changed the
String
Show
instances ofFromStringShow
,LitChar
, andLitString
to more closely match theText
Show
instances. As a result, theRead
instances for these data types were also changed so thatread . show = read . show = id
. - Removed the
recent-text
flag. We’ll allow users to build with older versions oftext
, but the latest version is recommended. Because of this, theinteger-simple
andinteger-gmp
flags are not needed. - Removed the
integer-gmp2
flag, as it supported a configuration that didn’t actually compile on GHC - Removed the
transformers-four
flag, as it is not needed now thattransformers-compat
is a dependency
0.5
- Fix build for GHC 7.10, old GHC versions, and Windows
- Removed the
Text.Show.Text.Data.Containers
andText.Show.Text.Data.Time
modules. The modules for the data types incontainers
andtime
were migrated to a separate library,text-show-instances
. - Removed the
-ftext-format
flag, astext-show
no longer usestext-format
. - A serious bug in the
text
package that caused segfaults when building largeInteger
s was fixed intext-1.2.0.2
. A flag (-frecent-text
) was added that allows you to take advantage of this. - Fixed a bug that would cause the output of functions in the
Text.Show.Text.Data.Floating
module to not matchbase
depending on what version ofbase
is used. - The type signatures of lambda expressions generated by
mkShow
and related functions were loosened to allow them to be used to “manually” deriveShow
instances for data types with higher-kinded type parameters or type arguments with restrictedShow
instances. This should not be a breaking change; you can simply do more withmkShow
et al. than you could before. For more information, see the documentation inText.Show.Text.TH
. - Loosened the
Show
instance ofComplex a
to only depend onShow a
(previously requiredRealFloat a
) if using base-4.4.0.0 or later - Moved
showbRatioPrec
toText.Show.Text.Data.Ratio
,showbComplexPrec
toText.Show.Text.Data.Complex
,showbProxy
toText.Show.Text.Data.Proxy
, andshowbFingerprint
toText.Show.Text.GHC.Fingerprint
- Added
deriveShowPragmas
toText.Show.Text.TH
to allow users to specifyINLINE
orSPECIALIZE instance
pragmas withShow
instances. - Added
FromStringShow
,showbSpace
,showbUnary
,showbUnary1
, andshowbBinary1
toText.Show.Text
- Added
mkShowList
,mkShowListLazy
, andmkShowbList
toText.Data.Text.TH
- For base-4.8.0.0 and above, added the
Text.Show.Text.Data.Functor.Identity
,Text.Show.Text.Data.Void
,Text.Show.Text.GHC.RTS.Flags
,Text.Show.Text.GHC.StaticPtr
, andText.Show.Text.Numeric.Natural
modules. Also addedShow
instances forAllocationLimitExceeded
inText.Show.Text.Control.Exception
andAlt
inText.Show.Text.Data.Monoid
. Also fixed theShow
instance forFixed
values. - Added the
Text.Show.Text.Data.GHC.Conc.Windows
module (Windows-only) - Added the
Text.Show.Text.Data.OldTypeable
module for base-4.7 - Added the
Text.Show.Text.GHC.TypeLits
module for base-4.6 and above - Added the
Text.Show.Text.Debug.Trace
andText.Show.Text.Debug.Trace.TH
modules as an analog toDebug.Trace
- Added the
Show1
class and corresponding instances for unary type constructors. - Added
LitChar
andLitString
toText.Show.Text.Data.Char
- Exported
asciiTabB
inText.Show.Text.Data.Char
- Renamed
showbTextStrict
to ‘showbText’ (to keep with naming conventions in thetext
library) and addedshowbBuilder
toText.Show.Text.Data.Text
.
0.4.1
- Added the utility functions
toText
andtoString
for working withBuilder
s.
0.4
- Due to GHC bug #5289, projects that depend on the
double-conversion
library (such astext-format
, a dependency oftext-show
) may break due to GHC incorrectly linking against libstdc++. Therefore,text-show
was changed so that it does not depend ontext-format
by default. This behavior can be changed by using the-ftext-format
flag when usingcabal
. - Added
showbZonedTime
toText.Show.Text.Data.Time
(and correspondingShow
instance forZonedTime
) - Exposed
showbMaskingState
(is was already there, I just forgot to export it) - If using GHC 7.6 or earlier, depend on tagged so that
Data.Proxy
(and thusshowbProxy
fromText.Show.Text.Data.Typeable
) can be used - Refactored code to use Template Haskell derivations when possible
0.3.1.0
- Added
showList
andshowListLazy
- Don’t use
showbListDefault
to showcontainers
data types - Added the ability to splice
show
functions for arbitrary data types (even if they aren’tShow
instances). These functions aremkShow
,mkShowLazy
,mkShowPrec
,mkShowPrecLazy
,mkShowb
,mkShowbPrec
,mkPrint
,mkPrintLazy
,mkHPrint
, andmkHPrintLazy
.
0.3.0.0
- Lots of bugfixes
Show
instances for many other data types inbase
,containers
andtime
- Exposed internal modules with monomorphic functions
Text.Show.Text
now exportsData.Text.Lazy.Builder
for convenience- Add
showLazy
,showPrec
,showPrecLazy
,printLazy
,hPrint
,hPrintLazy
,lengthB
, andreplicateB
- Template Haskell derivation of
Show
instances (doesn’t support data families yet)
0.2.0.0
- Added
Show
instances for strict and lazyText
0.1.0.0
- Initial commit