Copyright | (c) Ivan Lazar Miljenovic |
---|---|
License | MIT |
Maintainer | Ivan.Miljenovic@gmail.com |
Safe Haskell | None |
Language | Haskell2010 |
Control.Quiver.Binary
Description
This module provides functions for encoding/decoding values within a Quiver.
For any I/O operations, use the functions provided by the quiver-bytestring package.
- spput :: Binary a => SConsumer a PutM e
- spget :: Binary a => SProducer a Get e
- spdecode :: (Binary a, Monad m) => SP ByteString a m String
- spdecodeL :: forall a m. (Binary a, Monad m) => SP ByteString a m String
- spencode :: (Binary a, Functor m) => SP a ByteString m ()
- spencodeL :: Binary a => SP a ByteString m ()
- class Binary t
Simple encoding/decoding
Conversions to/from ByteStrings
spdecode :: (Binary a, Monad m) => SP ByteString a m String Source
Decode all values from the provided stream of strict ByteStrings. Note
that the error message does not return the ByteOffset
from the
Decoder
as it will probably not match the actual location of the
source ByteString.
spdecodeL :: forall a m. (Binary a, Monad m) => SP ByteString a m String Source
Decode all values from the provided stream of lazy ByteStrings. Note
that the error message does not return the ByteOffset
from the
Decoder
as it will probably not match the actual location of the
source ByteString.
spencode :: (Binary a, Functor m) => SP a ByteString m () Source
Encode all values to a stream of strict ByteStrings.
spencodeL :: Binary a => SP a ByteString m () Source
Encode all values to a stream of lazy ByteStrings.
Re-exports
class Binary t
The Binary
class provides put
and get
, methods to encode and
decode a Haskell value to a lazy ByteString
. It mirrors the Read
and
Show
classes for textual representation of Haskell types, and is
suitable for serialising Haskell values to disk, over the network.
For decoding and generating simple external binary formats (e.g. C
structures), Binary may be used, but in general is not suitable
for complex protocols. Instead use the Put
and Get
primitives
directly.
Instances of Binary should satisfy the following property:
decode . encode == id
That is, the get
and put
methods should be the inverse of each
other. A range of instances are provided for basic Haskell types.
Instances