text-0.11.3.1: An efficient packed Unicode text type.

Portability | GHC
Stability | experimental
Maintainer | bos@serpentine.com, rtomharper@googlemail.com, duncan@haskell.org
Safe Haskell | None

Data.Text.Lazy.Internal

Contents

- Data type invariant and abstraction functions
- Chunk allocation sizes

Description

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.

You should not use this module unless you are determined to monkey with the internals, as the functions here do just about nothing to preserve data invariants. You have been warned!

Synopsis

- data Text
  - = Empty
  - | Chunk !Text Text
- chunk :: Text -> Text -> Text
- empty :: Text
- foldrChunks :: (Text -> a -> a) -> a -> Text -> a
- foldlChunks :: (a -> Text -> a) -> a -> Text -> a
- strictInvariant :: Text -> Bool
- lazyInvariant :: Text -> Text
- showStructure :: Text -> String
- defaultChunkSize :: Int
- smallChunkSize :: Int
- chunkOverhead :: Int

# Documentation

data Text Source

Constructors

Empty |
Chunk !Text Text |

Instances

Eq Text |
Data Text |
Ord Text |
Read Text |
Show Text |
Typeable Text |
IsString Text |
Monoid Text |
NFData Text |

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 -> 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 `Text`s. 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.