text-0.11.2.1: An efficient packed Unicode text type.

PortabilityGHC
Stabilityexperimental
Maintainerbos@serpentine.com, rtomharper@googlemail.com, duncan@haskell.org
Safe HaskellSafe-Infered

Data.Text.Internal

Contents

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

Types

data Text Source

A space efficient, packed, unboxed Unicode text type.

Constructors

Text !Array !Int !Int 

Construction

text :: Array -> Int -> Int -> TextSource

Smart constructor.

textP :: Array -> Int -> Int -> TextSource

Construct a Text without invisibly pinning its byte array in memory if its length has dwindled to zero.

Safety

safe :: Char -> CharSource

Map a Char to a Text-safe value.

UTF-16 surrogate code points are not included in the set of Unicode scalar values, but are unfortunately admitted as valid Char values by Haskell. They cannot be represented in a Text. This function remaps those code points to the Unicode replacement character "�", and leaves other code points unchanged.

Code that must be here for accessibility

empty :: TextSource

O(1) The empty Text.

Utilities

firstf :: (a -> c) -> Maybe (a, b) -> Maybe (c, b)Source

Apply a function to the first element of an optional pair.

Debugging

showText :: Text -> StringSource

A useful show-like function for debugging purposes.