| Copyright | (C) 2012-2015 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.ByteString.Strict.Lens
Description
Documentation
packedBytes :: Iso' [Word8] ByteString Source
pack (or unpack) a list of bytes into a ByteString
packedBytes≡fromunpackedBytespackx ≡ x^.packedBytesunpackx ≡ x^.frompackedBytes
>>>[104,101,108,108,111]^.packedBytes"hello"
unpackedBytes :: Iso' ByteString [Word8] Source
unpack (or pack) a ByteString into a list of bytes
unpackedBytes≡frompackedBytesunpackx ≡ x^.unpackedBytespackx ≡ x^.fromunpackedBytes
>>>"hello"^.packedChars.unpackedBytes[104,101,108,108,111]
bytes :: IndexedTraversal' Int ByteString Word8 Source
Traverse each Word8 in a ByteString.
This Traversal walks the ByteString in a tree-like fashion
enable zippers to seek to locations in logarithmic time and accelerating
many monoidal queries, but up to associativity (and constant factors)
it is equivalent to the much slower:
bytes≡unpackedBytes.traversed
>>>anyOf bytes (== 0x80) (Char8.pack "hello")False
Note that when just using this as a Setter,
can be more efficient.setting map
packedChars :: Iso' String ByteString Source
pack (or unpack) a list of characters into a ByteString
When writing back to the ByteString it is assumed that every Char
lies between '\x00' and '\xff'.
packedChars≡fromunpackedCharspackx ≡ x^.packedCharsunpackx ≡ x^.frompackedChars
>>>"hello"^.packedChars.each.re (base 16 . enum).to (\x -> if Prelude.length x == 1 then '0':x else x)"68656c6c6f"
unpackedChars :: Iso' ByteString String Source
unpack (or pack) a list of characters into a ByteString
When writing back to the ByteString it is assumed that every Char
lies between '\x00' and '\xff'.
unpackedChars≡frompackedCharsunpackx ≡ x^.unpackedCharspackx ≡ x^.fromunpackedChars
>>>[104,101,108,108,111]^.packedBytes.unpackedChars"hello"
chars :: IndexedTraversal' Int ByteString Char Source
Traverse the individual bytes in a ByteString as characters.
When writing back to the ByteString it is assumed that every Char
lies between '\x00' and '\xff'.
This Traversal walks the ByteString in a tree-like fashion
enable zippers to seek to locations in logarithmic time and accelerating
many monoidal queries, but up to associativity (and constant factors)
it is equivalent to the much slower:
chars=unpackedChars.traverse
>>>anyOf chars (== 'h') "hello"True