text-show
Efficient conversion of values into Text
https://github.com/RyanGlScott/text-show
| Version on this page: | 2@rev:2 |
| LTS Haskell 24.17: | 3.11.2 |
| Stackage Nightly 2025-10-26: | 3.11.2 |
| Latest on Hackage: | 3.11.2 |
text-show-2@sha256:26d3d47cd81cdf00d2d529569aec498a095fe424a4469405527b40ef489c3cc4,14985Module documentation for 2
- 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.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 Strings. This package was created in the spirit of bytestring-show.
At the moment, text-show provides instances for most data types in the array, base, bytestring, and text packages. Therefore, much of the source code for text-show consists of borrowed code from those packages in order to ensure that the behaviors of Show and TextShow coincide.
For most uses, simply importing TextShow will suffice:
module Main where
import TextShow
main :: IO ()
main = printT (Just "Hello, World!")
If you desire it, there are also monomorphic versions of the showb function available in the submodules of Text.Show.Text. See the naming conventions page for more information.
Support for automatically deriving TextShow instances can be found in the TextShow.TH and TextShow.Generic modules. If you don’t know which one to use, use TextShow.TH.
Changes
2
- Changed the top-level module name from
Text.Show.TexttoTextShow, 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→TextShowShow1→TextShow1Show2→TextShow2show→showtshowLazy→showtlshowPrec→showtPrecshowPrecLazy→showtlPrecshowList→showtListshowListLazy→showtlListprint→printTprintLazy→printTLhPrint→hPrintThPrintLazy→hPrintTLGShow→GTextShowGShow1→GTextShow1genericShow→genericShowtgenericShowLazy→genericShowtlgenericShowPrec→genericShowtPrecgenericShowPrecLazy→genericShowtlPrecgenericShowList→genericShowtListgenericShowListLazy→genericShowtlListgenericPrint→genericPrintTgenericPrintLazy→ genericPrintTL``genericHPrint→genericHPrintTgenericHPrintLazy→genericHPrintTLderiveShow→deriveTextShowderiveShow1→deriveTextShow1deriveShow2→deriveTextShow2mkShow→makeShowtmkShowLazy→makeShowtlmkShowPrec→makeShowtPrecmkShowPrecLazy→makeShowtlPrecmkShowList→makeShowtListmkShowListLazy→makeShowtlListmkShowb→makeShowbmkShowbPrec→makeShowbPrecmkShowbList→makeShowbListmkPrint→makePrintTmkPrintLazy→makePrintTLmkHPrint→makeHPrintTmkHPrintLazy→makeHPrintTLmkShowbPrecWith→makeShowbPrecWithmkShowbPrec1→makeShowbPrec1mkShowbPrecWith2→makeShowbPrecWith2mkShowbPrec2→makeShowbPrec2trace→tracettraceLazy→tracetltraceId→tracetIdtraceIdLazy→tracetlIdtraceShow→traceTextShowtraceShowId→traceTextShowIdtraceStack→tracetStacktraceStackLazy→tracetlStacktraceIO→tracetIOtraceIOLazy→tracetlIOtraceM→tracetMtraceMLazy→tracetlMtraceShowM→traceTextShowMtraceEvent→tracetEventtraceEventLazy→tracetlEventtraceEventIO→travetEventIOtraceEventIOLazy→tracetlEventIOtraceMarker→tracetMarkertraceMarkerLazy→tracetlMarkertraceMarkerIO→tracetMarkerIOtraceMarkerIOLazy→tracetlMarkerIOgenericTraceShow→genericTraceTextShowgenericTraceShowId→genericTraceTextShowIdgenericTraceShowM→genericTraceTextShowMmkTraceShow→makeTraceTextShowmkTraceShowId→makeTraceTextShowIdmkTraceShowM→makeTraceTextShowM- Added
TextShow Lifetimeinstance inTextShow.GHC.Event(if usingbase-4.8.1.0or later) - Generalized
tracetM,tracetlM, andtraceTextShowMto use anApplicativeconstraint instead ofMonad - Fixed a bug in which the
TextShow(1)instances forProxy,(:~:), andCoerciondidn’t use-XPolyKinds - Fixed a bug in the Template Haskell deriver which would cause
deriveTextShowto fail on type parameters with sufficiently high kinds
1
- The
Show1class has been completely overhauled.Show1now uses the functionshowbPrecWith, which takes as an argument a function of typeInt -> a -> Builderto show occurrences of the type parameter (instead of requiring the type parameter to be aShowinstance). This matches the new implementation ofShow1in the next version oftransformers. A similarShow2class (with the functionshowbPrecWith2) was also added. - As a consequence,
Show1instances should no longer be defined in terms ofshowbPrec; rather,Showinstances should be defined in terms ofshowbPrecWithorshowbPrecWith2, andShow1instances can be defined in terms ofshowbPrecWith2. - The
showbPrec1function is no longer a class method ofShow1, but is now a standalone function defined in terms ofshowbPrecWith.showbPrec1can be useful for definingShowinstances. A similarshowbPrec2function was also added. - The monomorphic functions in the many submodules of this package have been generalized (where possible) to use
Show1andShow2instances. These functions have-PrecWithand-PrecWith2suffixes, respectively. - Because of the generality of the new
showPrecWithfunction,Show1instances are now possible forRatio,Alt,Rec1,M1,(:+:),(:*:), and(:.:). - Removed many silly instances for
FromStringShowandFromTextShow, 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
Show1andShow2instances are now possible using thederiveShow1andderiveShow2functions. See the documentation inText.Show.Text.THfor more details. In addition, themkShowbPrecWith,mkShowbPrec1,mkShowbPrecWith2, andmkShowbPrec2functions were added. - Removed the ability to call
deriveShowormkShowbPrec(or other functions prefixed withmk-) using a data family name. This is considered a misfeature. If you want to deriveShowfor data family instances, use the correspondingdata instanceornewtype instanceconstructor 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 useINLINEandSPECIALIZE instancepragmas with your Template Haskell-generated code, create manual instances withmkShowbPrecand family. Show1instances can now be created generically using thegenericShowbPrecWithfunction inText.Show.Text.Generics. AgenericShowbPrec1was also added.- Added
generic-derivingas a dependency, which allows generics-related code to be exported on more versions of GHC ConType(inText.Show.Text.Generics) now has anInf Stringconstructor instead ofInf Builder. As a result,ConTypenow always anEqandOrdinstance, and aRead ConTypeinstance was added.Typeableinstances for the promoted data constructors'FromStringShowand'FromTextShow- Added
showbFPFormattoText.Show.Text.Data.Floating - Revamped test suite
0.8.1.1
- Retroactive
CHANGELOGupdate
0.8.1
- Fix test suite build with older versions of
QuickCheck
0.8
- Exported
formatRealFloatBandformatRealFloatAltBfromText.Show.Text.Data.Floating. ReexportedFPFormat(fromtext) in the same module, and added aTextShowinstance for it. - The
Showinstance forRatio anow only requires aShow aconstraint if usingbase-4.4.0.0or later (if usingbase-4.3.0.0, it requires a(Show a, Integral a)constraint) - Added
showbSingPrectoText.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
textto 0.11.1 due to reexportingFPFormat - Added
showbUnicodeException,showbI16Prec,showbDecodingPrec, andshowbSizePrecfunctions (and correspondingShowinstances) toText.Show.Text.Data.Text - Made
GShowinText.Show.Text.Genericspoly-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 correspondingShowandShow1instances forConst) toText.Show.Text.Control.Applicative - Added
showbUArrayPrec(and correspondingShowinstance forUArrays) andshowbIArrayPrectoText.Data.Text.Data.Array. - Renamed
showbListDefaulttoshowbListWithto match howText.Shownames it - Exposed
showbShortByteStringwith all versions ofbytestringby using thebytestring-builderpackage - Corrected the
Showinstance forLexeme(inText.Show.Text.Text.Read.Lex) - Fixed
TypeRepoutput on GHC 7.10 and later - Removed
LitCharandLitStringfromText.Show.Text.Data.Char, as they were not as useful as I had imagined. - Removed the deprecated
replicateBfunction Typableinstances forShow,Show1, andGShow(with GHC 7.8 and later)Typeableinstance forConType- Only derive
EqandOrdforConTypeif a recent-enough version oftextis used - Changed the implementations of some functions in
Text.Show.Text.Debug.Traceto useByteStrings instead ofStrings
0.6.0.1
- Forgot to include some header files in
text-show.cabal
0.6
deriveShowcan 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.THfor 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.0or 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.GenericandText.Show.Text.Debug.Trace.Genericmodules - Deprecated
replicateBin favor oftimesNfrom thesemigroupslibrary - Added
FromTextShowtoText.Show.Text, which admits aStringShowinstance for any data type with aTextShowinstance (the counterpart ofFromStringShow) - Added
MonoidandSemigroupinstances forFromStringShow,Semigroupinstance forLitString,IsCharinstance forLitChar, andIsStringinstance for[LitChar] - Changed the
StringShowinstances ofFromStringShow,LitChar, andLitStringto more closely match theTextShowinstances. As a result, theReadinstances for these data types were also changed so thatread . show = read . show = id. - Removed the
recent-textflag. We’ll allow users to build with older versions oftext, but the latest version is recommended. Because of this, theinteger-simpleandinteger-gmpflags are not needed. - Removed the
integer-gmp2flag, as it supported a configuration that didn’t actually compile on GHC - Removed the
transformers-fourflag, as it is not needed now thattransformers-compatis a dependency
0.5
- Fix build for GHC 7.10, old GHC versions, and Windows
- Removed the
Text.Show.Text.Data.ContainersandText.Show.Text.Data.Timemodules. The modules for the data types incontainersandtimewere migrated to a separate library,text-show-instances. - Removed the
-ftext-formatflag, astext-showno longer usestext-format. - A serious bug in the
textpackage that caused segfaults when building largeIntegers 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.Floatingmodule to not matchbasedepending on what version ofbaseis used. - The type signatures of lambda expressions generated by
mkShowand related functions were loosened to allow them to be used to “manually” deriveShowinstances for data types with higher-kinded type parameters or type arguments with restrictedShowinstances. This should not be a breaking change; you can simply do more withmkShowet al. than you could before. For more information, see the documentation inText.Show.Text.TH. - Loosened the
Showinstance ofComplex ato only depend onShow a(previously requiredRealFloat a) if using base-4.4.0.0 or later - Moved
showbRatioPrectoText.Show.Text.Data.Ratio,showbComplexPrectoText.Show.Text.Data.Complex,showbProxytoText.Show.Text.Data.Proxy, andshowbFingerprinttoText.Show.Text.GHC.Fingerprint - Added
deriveShowPragmastoText.Show.Text.THto allow users to specifyINLINEorSPECIALIZE instancepragmas withShowinstances. - Added
FromStringShow,showbSpace,showbUnary,showbUnary1, andshowbBinary1toText.Show.Text - Added
mkShowList,mkShowListLazy, andmkShowbListtoText.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.Naturalmodules. Also addedShowinstances forAllocationLimitExceededinText.Show.Text.Control.ExceptionandAltinText.Show.Text.Data.Monoid. Also fixed theShowinstance forFixedvalues. - Added the
Text.Show.Text.Data.GHC.Conc.Windowsmodule (Windows-only) - Added the
Text.Show.Text.Data.OldTypeablemodule for base-4.7 - Added the
Text.Show.Text.GHC.TypeLitsmodule for base-4.6 and above - Added the
Text.Show.Text.Debug.TraceandText.Show.Text.Debug.Trace.THmodules as an analog toDebug.Trace - Added the
Show1class and corresponding instances for unary type constructors. - Added
LitCharandLitStringtoText.Show.Text.Data.Char - Exported
asciiTabBinText.Show.Text.Data.Char - Renamed
showbTextStrictto ‘showbText’ (to keep with naming conventions in thetextlibrary) and addedshowbBuildertoText.Show.Text.Data.Text.
0.4.1
- Added the utility functions
toTextandtoStringfor working withBuilders.
0.4
- Due to GHC bug #5289, projects that depend on the
double-conversionlibrary (such astext-format, a dependency oftext-show) may break due to GHC incorrectly linking against libstdc++. Therefore,text-showwas changed so that it does not depend ontext-formatby default. This behavior can be changed by using the-ftext-formatflag when usingcabal. - Added
showbZonedTimetoText.Show.Text.Data.Time(and correspondingShowinstance 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 thusshowbProxyfromText.Show.Text.Data.Typeable) can be used - Refactored code to use Template Haskell derivations when possible
0.3.1.0
- Added
showListandshowListLazy - Don’t use
showbListDefaultto showcontainersdata types - Added the ability to splice
showfunctions for arbitrary data types (even if they aren’tShowinstances). These functions aremkShow,mkShowLazy,mkShowPrec,mkShowPrecLazy,mkShowb,mkShowbPrec,mkPrint,mkPrintLazy,mkHPrint, andmkHPrintLazy.
0.3.0.0
- Lots of bugfixes
Showinstances for many other data types inbase,containersandtime- Exposed internal modules with monomorphic functions
Text.Show.Textnow exportsData.Text.Lazy.Builderfor convenience- Add
showLazy,showPrec,showPrecLazy,printLazy,hPrint,hPrintLazy,lengthB, andreplicateB - Template Haskell derivation of
Showinstances (doesn’t support data families yet)
0.2.0.0
- Added
Showinstances for strict and lazyText
0.1.0.0
- Initial commit