text-0.11.0.6: An efficient packed Unicode text type.

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

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

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

Smart constructor for `Chunk`. Guarantees the data type invariant.

empty :: Text

Smart constructor for `Empty`.

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

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

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

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

Check the invariant strictly.

lazyInvariant :: Text -> Text

Check the invariant lazily.

showStructure :: Text -> String

Display the internal structure of a lazy `Text`.

# Chunk allocation sizes

defaultChunkSize :: Int

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

smallChunkSize :: Int

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

chunkOverhead :: Int

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