cereal-plus-0.4.2: An extended serialization library on top of "cereal"

Safe HaskellNone
LanguageHaskell2010

CerealPlus.Deserialize

Description

A monad-transformer over Data.Serialize.Get.

Synopsis

Documentation

data Deserialize m a Source #

A deserialization monad transformer.

Instances

MFunctor Deserialize Source # 

Methods

hoist :: Monad m => (forall a. m a -> n a) -> Deserialize m b -> Deserialize n b #

MonadTrans Deserialize Source # 

Methods

lift :: Monad m => m a -> Deserialize m a #

Monad m => Monad (Deserialize m) Source # 

Methods

(>>=) :: Deserialize m a -> (a -> Deserialize m b) -> Deserialize m b #

(>>) :: Deserialize m a -> Deserialize m b -> Deserialize m b #

return :: a -> Deserialize m a #

fail :: String -> Deserialize m a #

Monad m => Functor (Deserialize m) Source # 

Methods

fmap :: (a -> b) -> Deserialize m a -> Deserialize m b #

(<$) :: a -> Deserialize m b -> Deserialize m a #

Monad m => Applicative (Deserialize m) Source # 

Methods

pure :: a -> Deserialize m a #

(<*>) :: Deserialize m (a -> b) -> Deserialize m a -> Deserialize m b #

(*>) :: Deserialize m a -> Deserialize m b -> Deserialize m b #

(<*) :: Deserialize m a -> Deserialize m b -> Deserialize m a #

MonadIO m => MonadIO (Deserialize m) Source # 

Methods

liftIO :: IO a -> Deserialize m a #

runPartial :: Deserialize m a -> ByteString -> m (Result m a) Source #

Run on a chunk of data and get a partial result.

data Result m a Source #

A partial result of deserialization.

Constructors

Fail Text ByteString

A message describing the deserialization failure and a remaining chunk.

Partial (ByteString -> m (Result m a))

A continuation function, which should be supplied with the next chunk.

Done a ByteString

A deserialized data structure and a remaining chunk.

Instances

MFunctor Result Source # 

Methods

hoist :: Monad m => (forall a. m a -> n a) -> Result m b -> Result n b #

liftGet :: Monad m => Get a -> Deserialize m a Source #

Run a Get action of the "cereal" library.

throwError :: Monad m => Text -> Deserialize m a Source #

Fail with a message.

Since there's no consensus on how to implement catchError of MonadError, we'll go with just this function.

It is not implemented as fail because fail is pure evil.