text-1.2.0.4: An efficient packed Unicode text type.

Copyright(c) 2009, 2010 Bryan O'Sullivan
LicenseBSD-style
Maintainerbos@serpentine.com
Stabilityexperimental
PortabilityGHC
Safe HaskellNone
LanguageHaskell98

Data.Text.Internal.Lazy

Contents

Description

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.

Synopsis

Documentation

chunk :: Text -> Text -> Text Source

Smart constructor for Chunk. Guarantees the data type invariant.

empty :: Text Source

Smart constructor for Empty.

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

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

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

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 -> Bool Source

Check the invariant strictly.

lazyInvariant :: Text -> Text Source

Check the invariant lazily.

showStructure :: Text -> String Source

Display the internal structure of a lazy Text.

Chunk allocation sizes

defaultChunkSize :: Int Source

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

smallChunkSize :: Int Source

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

chunkOverhead :: Int Source

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