module Data.Serialize.Instances where
import Data.Hashable
import Data.HashMap.Lazy as Lazy
import Data.List.NonEmpty
import Data.Serialize
import Data.Typeable
import Data.Typeable.Internal
import GHC.Generics
class Serialize1 f where
put1 :: Serialize a => Putter (f a)
default put1 :: Serialize (f a) => Putter (f a)
put1 = put
get1 :: Serialize a => Get (f a)
default get1 :: Serialize (f a) => Get (f a)
get1 = get
deriving instance Generic Fingerprint
deriving instance Generic TypeRep
instance Serialize Fingerprint where
instance Serialize TyCon where
get = mkTyCon3 <$> get <*> get <*> get
put x = do
put $ tyConPackage x
put $ tyConModule x
put $ tyConName x
instance Serialize TypeRep where
instance Serialize1 NonEmpty where
instance Serialize a => Serialize (NonEmpty a) where
instance (Eq k,Hashable k,Serialize k,Serialize a) => Serialize (Lazy.HashMap k a) where
get = Lazy.fromList <$> get
put = put . Lazy.toList