text-show
Efficient conversion of values into Text
https://github.com/RyanGlScott/text-show
| Version on this page: | 2.1.2@rev:2 | 
| LTS Haskell 24.18: | 3.11.2 | 
| Stackage Nightly 2025-11-04: | 3.11.2 | 
| Latest on Hackage: | 3.11.2 | 
text-show-2.1.2@sha256:b3b37a10589923b91729f07291795acf58f98efd5df1f32de99ab27fa1d3eda3,15645Module documentation for 2.1.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.
Changes
2.1.2
- Fixed GHC 7.10.3 build
 - Extended 
TextShow.Genericto allowgenericShowbPrec(and friends) to be used onGenericdatatypes withChar#,Double#,Float#,Int#, andWord#argument types, just like stringShowdoes - Added 
Generic1instances forFromStringShowandFromTextShow - Added 
TextShowinstances forUChar,UDouble,UFloat,UInt, andUWordinTextShow.GHC.Generics 
2.1.1
- Restore support for 
semigroups-0.16.1 
2.1
- Require 
semigroups>= 0.17 - Added 
showsToShowbandshowbToShowstoTextShow - Added 
TextShow1 FromStringShowinstance - Added 
showbGiveGCStats,showbDoCostCentres,showbDoHeapProfile, andshowbDoTracetoTextShow.GHC.RTS.Flagsif usingbase-4.8.2or later - Exported 
showbDownPrecWithon 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 usingStrings as an intermediary 
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→genericPrintTLgenericHPrint→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