text- An efficient packed Unicode text type.

Safe HaskellNone




Warning: this is an internal module, and does not have a stable API or name. Functions in this module may not check or enforce preconditions expected by public modules. Use at your own risk!

A module containing private Text internals. This exposes the Text representation and low level construction functions. Modules which extend the Text system may need to use this module.



chunk :: Text -> Text -> TextSource

Smart constructor for Chunk. Guarantees the data type invariant.

empty :: TextSource

Smart constructor for Empty.

foldrChunks :: (Text -> a -> a) -> a -> Text -> aSource

Consume the chunks of a lazy Text with a natural right fold.

foldlChunks :: (a -> Text -> a) -> a -> Text -> aSource

Consume the chunks of a lazy Text with a strict, tail-recursive, accumulating left fold.

Data type invariant and abstraction functions

The data type invariant for lazy Text: Every Text is either Empty or consists of non-null Texts. All functions must preserve this, and the QC properties must check this.

strictInvariant :: Text -> BoolSource

Check the invariant strictly.

lazyInvariant :: Text -> TextSource

Check the invariant lazily.

showStructure :: Text -> StringSource

Display the internal structure of a lazy Text.

Chunk allocation sizes

defaultChunkSize :: IntSource

Currently set to 16 KiB, less the memory management overhead.

smallChunkSize :: IntSource

Currently set to 128 bytes, less the memory management overhead.

chunkOverhead :: IntSource

The memory management overhead. Currently this is tuned for GHC only.