text-2.0.2: An efficient packed Unicode text type.

Copyright | (c) 2009 2010 Bryan O'Sullivan
License | BSD-style
Maintainer | bos@serpentine.com
Stability | experimental
Portability | GHC
Safe Haskell | Safe-Inferred
Language | Haskell2010

Data.Text.Internal.Lazy

Contents

- Data type invariant and abstraction functions
- Chunk allocation sizes

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

- 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
- equal :: Text -> Text -> Bool

# Documentation

data Text Source #

Constructors

Empty |
Chunk !Text Text |

#### Instances

Instances details

Data Text Source # | 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`

Instance details

Defined in Data.Text.Lazy

Methods

gfoldl :: (forall d b. Data d => c (d -> b) -> d -> c b) -> (forall g. g -> c g) -> Text -> c Text Source #

gunfold :: (forall b r. Data b => c (b -> r) -> c r) -> (forall r. r -> c r) -> Constr -> c Text Source #

toConstr :: Text -> Constr Source #

dataTypeOf :: Text -> DataType Source #

dataCast1 :: Typeable t => (forall d. Data d => c (t d)) -> Maybe (c Text) Source #

dataCast2 :: Typeable t => (forall d e. (Data d, Data e) => c (t d e)) -> Maybe (c Text) Source #

gmapT :: (forall b. Data b => b -> b) -> Text -> Text Source #

gmapQl :: (r -> r' -> r) -> r -> (forall d. Data d => d -> r') -> Text -> r Source #

gmapQr :: forall r r'. (r' -> r -> r) -> r -> (forall d. Data d => d -> r') -> Text -> r Source #

gmapQ :: (forall d. Data d => d -> u) -> Text -> [u] Source #

gmapQi :: Int -> (forall d. Data d => d -> u) -> Text -> u Source #

gmapM :: Monad m => (forall d. Data d => d -> m d) -> Text -> m Text Source #

gmapMp :: MonadPlus m => (forall d. Data d => d -> m d) -> Text -> m Text Source #

gmapMo :: MonadPlus m => (forall d. Data d => d -> m d) -> Text -> m Text Source #

IsString Text Source #

Performs replacement on invalid scalar values:

    >>> :set -XOverloadedStrings
    >>> "\55555" :: Data.Text.Lazy.Text
    "\65533"

Instance details Defined in Data.Text.Lazy Methods fromString :: String -> Text Source #
Monoid Text Source # |
Instance details Defined in Data.Text.Lazy Methods mempty :: Text Source # mappend :: Text -> Text -> Text Source # mconcat :: [Text] -> Text Source #
Semigroup Text Source # | Since: text-1.2.2.0
Instance details Defined in Data.Text.Lazy Methods (<>) :: Text -> Text -> Text Source # sconcat :: NonEmpty Text -> Text Source # stimes :: Integral b => b -> Text -> Text Source #

IsList Text Source #

Performs replacement on invalid scalar values:

    >>> :set -XOverloadedLists
    >>> ['\55555'] :: Data.Text.Lazy.Text
    "\65533"

Since: text-1.2.0.0

Instance details Defined in Data.Text.Lazy Associated Types type Item Text Source # Methods fromList :: [Item Text] -> Text Source # fromListN :: Int -> [Item Text] -> Text Source # toList :: Text -> [Item Text] Source #
Read Text Source # |
Instance details Defined in Data.Text.Lazy Methods readsPrec :: Int -> ReadS Text Source # readList :: ReadS [Text] Source # readPrec :: ReadPrec Text Source # readListPrec :: ReadPrec [Text] Source #
Show Text Source # |
Instance details Defined in Data.Text.Lazy Methods showsPrec :: Int -> Text -> ShowS Source # show :: Text -> String Source # showList :: [Text] -> ShowS Source #
PrintfArg Text Source # | Since: text-1.2.2.0
Instance details Defined in Data.Text.Lazy Methods formatArg :: Text -> FieldFormatter Source # parseFormat :: Text -> ModifierParser Source #
Binary Text Source # | Since: text-1.2.1.0
Instance details Defined in Data.Text.Lazy Methods put :: Text -> Put Source # get :: Get Text Source # putList :: [Text] -> Put Source #
NFData Text Source # |
Instance details Defined in Data.Text.Lazy Methods rnf :: Text -> () Source #
Eq Text Source # |
Instance details Defined in Data.Text.Lazy Methods (==) :: Text -> Text -> Bool Source # (/=) :: Text -> Text -> Bool Source #
Ord Text Source # |
Instance details Defined in Data.Text.Lazy Methods compare :: Text -> Text -> Ordering Source # (<) :: Text -> Text -> Bool Source # (<=) :: Text -> Text -> Bool Source # (>) :: Text -> Text -> Bool Source # (>=) :: Text -> Text -> Bool Source # max :: Text -> Text -> Text Source # min :: Text -> Text -> Text Source #
Lift Text Source # | Since: text-1.2.4.0
Instance details Defined in Data.Text.Lazy Methods lift :: Quote m => Text -> m Exp Source # liftTyped :: forall (m :: Type -> Type). Quote m => Text -> Code m Text Source #
type Item Text Source # |
Instance details Defined in Data.Text.Lazy 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 `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.

equal :: Text -> Text -> Bool Source #