text-1.2.1.3: 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

data Text Source

Constructors

Empty 
Chunk !Text Text 

Instances

IsList Text 
Eq Text 
Data Text

This instance preserves data abstraction at the cost of inefficiency. We omit reflection services for the sake of data abstraction.

This instance was created by copying the updated behavior of Data.Text.Text

Ord Text 
Read Text 
Show Text 
IsString Text 
Monoid Text 
Binary Text 
NFData Text 
Typeable * Text 
type Item Text = Char 

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.