Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- {-# LANGUAGE RankNTypes #-}
- {-# LANGUAGE ExistentialQuantification #-}
- {-# LANGUAGE FlexibleInstances #-}
- {-# LANGUAGE NoImplicitPrelude #-}
- {-# LANGUAGE GeneralizedNewtypeDeriving #-}
- module Serialization where
- import Protolude
- import Data.Binary
- data SerializationError = BinaryDecodingError Text
- class Serializable a where
- serialize :: a -> LByteString
- deserialize :: LByteString -> Either SerializationError a
- newtype BinarySerializable a = MkBinarySerializable a
- instance Binary a => Serializable (BinarySerializable a) where
- serialize (MkBinarySerializable a)= encode a
- deserialize = bimap (\(_,_, errString) -> BinaryDecodingError (show errString))
- (\(_,_, a) -> MkBinarySerializable a)
- . decodeOrFail
Add Comment
Please, Sign In to add comment