{-# LANGUAGE MultiParamTypeClasses , FlexibleInstances , FlexibleContexts , UndecidableInstances #-} module Test.Serialization.Symbiote.Cereal where import Test.Serialization.Symbiote (SymbioteOperation, Symbiote (..), Operation) import qualified Data.Serialize as Cereal import qualified Data.ByteString as BS instance ( Cereal.Serialize a , Cereal.Serialize (Operation a) , SymbioteOperation a ) => Symbiote a BS.ByteString where encode = Cereal.encode decode x = case Cereal.decode x of Left _ -> Nothing Right y -> Just y encodeOp = Cereal.encode decodeOp x = case Cereal.decode x of Left _ -> Nothing Right y -> Just y