bytes-0.2: Sharing code for serialization between binary and cereal

Portabilitynon-portable
Stabilityexperimental
MaintainerEdward Kmett <ekmett@gmail.com>
Safe HaskellNone

Data.Bytes.Serial

Description

This module generalizes the binary PutM and cereal PutM monads in an ad hoc fashion to permit code to be written that is compatible across them.

Moreover, this class permits code to be written to be portable over various monad transformers applied to these as base monads.

Synopsis

Documentation

class GSerial f whereSource

Used internally to provide generic serialization

Methods

gserialize :: MonadPut m => f a -> m ()Source

gdeserialize :: MonadGet m => m (f a)Source

Instances

GSerial V1 
GSerial U1 
Serial a => GSerial (K1 i a) 
(GSerial f, GSerial g) => GSerial (:+: f g) 
(GSerial f, GSerial g) => GSerial (:*: f g) 
GSerial f => GSerial (M1 i c f) 

class Serial1 f whereSource

Methods

serializeWith :: MonadPut m => (a -> m ()) -> f a -> m ()Source

deserializeWith :: MonadGet m => m a -> m (f a)Source

serialize1 :: (MonadPut m, Serial1 f, Serial a) => f a -> m ()Source

deserialize1 :: (MonadGet m, Serial1 f, Serial a) => m (f a)Source

class GSerial1 f whereSource

Used internally to provide generic serialization

Methods

gserializeWith :: MonadPut m => (a -> m ()) -> f a -> m ()Source

gdeserializeWith :: MonadGet m => m a -> m (f a)Source

Instances

GSerial1 V1 
GSerial1 U1 
GSerial1 Par1 
GSerial1 f => GSerial1 (Rec1 f) 
Serial a => GSerial1 (K1 i a) 
(GSerial1 f, GSerial1 g) => GSerial1 (:+: f g) 
(GSerial1 f, GSerial1 g) => GSerial1 (:*: f g) 
GSerial1 f => GSerial1 (M1 i c f)