lens-4.3: Lenses, Folds and Traversals

MaintainerEdward Kmett <ekmett@gmail.com>
Safe HaskellTrustworthy






packed :: Iso' String TextSource

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

>>> "hello"^.packed -- :: Text
 pack x ≡ x ^. packed
 unpack x ≡ x ^. from packed
 packedfrom unpacked

unpacked :: Iso' Text StringSource

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

>>> "hello"^.unpacked -- :: String
 pack x ≡ x ^. from unpacked
 unpack x ≡ x ^. packed

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

 unpackedfrom packed

_Text :: Iso' Text StringSource

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

 _Text = from packed
>>> _Text # "hello" -- :: Text

text :: IndexedTraversal' Int Text CharSource

Traverse the individual characters in a Text.

>>> anyOf text (=='c') "chello"
 text = unpacked . traversed

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


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

builder :: Iso' Text BuilderSource

Convert between lazy Text and Builder .

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

utf8 :: Prism' ByteString TextSource

EncodeDecode a lazy 'Text' tofrom 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 # "☃")