Data.Text.Internal.Lazy

text-1.2.3.1: 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 | None
Language | Haskell98

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

# Documentation

data Text Source #

Constructors

Empty |
Chunk !Text Text |

#### Instances

Instances details

IsList Text # | 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 #
Eq Text # |
Instance details Defined in Data.Text.Lazy Methods (==) :: Text -> Text -> Bool Source # (/=) :: Text -> Text -> Bool Source #
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`
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 #
Ord Text # |
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 #
Read Text # |
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 # |
Instance details Defined in Data.Text.Lazy Methods showsPrec :: Int -> Text -> ShowS Source # show :: Text -> String Source # showList :: [Text] -> ShowS Source #
IsString Text # |
Instance details Defined in Data.Text.Lazy Methods fromString :: String -> Text Source #
Semigroup Text # | Non-orphan `Semigroup` instance only defined for `base-4.9.0.0` and later; orphan instances for older GHCs are provided by the semigroups package 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 #
Monoid Text # |
Instance details Defined in Data.Text.Lazy Methods mempty :: Text Source # mappend :: Text -> Text -> Text Source # mconcat :: [Text] -> Text Source #
PrintfArg Text # | Only defined for `base-4.7.0.0` and later Since: text-1.2.2.0
Instance details Defined in Data.Text.Lazy Methods formatArg :: Text -> FieldFormatter Source # parseFormat :: Text -> ModifierParser Source #
Binary Text # | 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 # |
Instance details Defined in Data.Text.Lazy Methods rnf :: Text -> () Source #
type Item Text # |
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.