lens-4.15.3: Lenses, Folds and Traversals

Copyright | (C) 2012-2016 Edward Kmett
License | BSD-style (see the file LICENSE)
Maintainer | Edward Kmett <ekmett@gmail.com>
Stability | experimental
Portability | non-portable
Safe Haskell | None
Language | Haskell98

Data.Text.Lazy.Lens

Description

Synopsis

- packed :: Iso' String Text
- unpacked :: Iso' Text String
- _Text :: Iso' Text String
- text :: IndexedTraversal' Int Text Char
- builder :: Iso' Text Builder
- utf8 :: Prism' ByteString Text
- pattern Text :: String -> Text

# Documentation

packed :: Iso' String Text #

This isomorphism can be used to `pack` (or `unpack`) lazy `Text`.

    >>> "hello"^.packed -- :: Text
    "hello"

    pack x ≡ x ^. packed
    unpack x ≡ x ^. from packed
    packed ≡ from unpacked

unpacked :: Iso' Text String #

This isomorphism can be used to `unpack` (or `pack`) lazy `Text`.

    >>> "hello"^.unpacked -- :: String
    "hello"

    pack x ≡ x ^. from unpacked
    unpack x ≡ x ^. packed

This `Iso` is provided for notational convenience rather than out of great need, since

    unpacked ≡ from packed

_Text :: Iso' Text String #

This is an alias for `unpacked` that makes it clearer how to use it with `(`#`)`.

    _Text = from packed

    >>> _Text # "hello" -- :: Text
    "hello"

text :: IndexedTraversal' Int Text Char #

Traverse the individual characters in a `Text`.

    >>> anyOf text (=='c') "chello"
    True

    text = unpacked . traversed

When the type is unambiguous, you can also use the more general `each`.

    text ≡ each

Note that when just using this as a `Setter`, ``setting` `map`` can be more efficient.

builder :: Iso' Text Builder #

Convert between lazy `Text` and `Builder` .

    fromLazyText x ≡ x ^. builder
    toLazyText x ≡ x ^. from builder

utf8 :: Prism' ByteString Text #

Encode/Decode a lazy `Text` to/from lazy `ByteString`, via UTF-8.

Note: This function does not decode lazily, as it must consume the entire input before deciding whether or not it fails.

    >>> ByteString.unpack (utf8 # "☃")
    [226,152,131]

pattern Text :: String -> Text #