persist-0.1.1.1: Minimal serialization library with focus on performance

Safe HaskellNone
LanguageHaskell2010

Data.Persist

Contents

Synopsis

The Persist class

class Persist t where #

Minimal complete definition

Nothing

Methods

put :: t -> Put () #

Encode a value in the Put monad.

get :: Get t #

Decode a value in the Get monad

put :: (Generic t, GPersistPut (Rep t)) => t -> Put () #

Encode a value in the Put monad.

get :: (Generic t, GPersistGet (Rep t)) => Get t #

Decode a value in the Get monad

Instances
Persist Bool # 
Instance details

Defined in Data.Persist

Methods

put :: Bool -> Put () #

get :: Get Bool #

Persist Char # 
Instance details

Defined in Data.Persist

Methods

put :: Char -> Put () #

get :: Get Char #

Persist Double # 
Instance details

Defined in Data.Persist

Methods

put :: Double -> Put () #

get :: Get Double #

Persist Float # 
Instance details

Defined in Data.Persist

Methods

put :: Float -> Put () #

get :: Get Float #

Persist Int # 
Instance details

Defined in Data.Persist

Methods

put :: Int -> Put () #

get :: Get Int #

Persist Int8 # 
Instance details

Defined in Data.Persist

Methods

put :: Int8 -> Put () #

get :: Get Int8 #

Persist Int16 # 
Instance details

Defined in Data.Persist

Methods

put :: Int16 -> Put () #

get :: Get Int16 #

Persist Int32 # 
Instance details

Defined in Data.Persist

Methods

put :: Int32 -> Put () #

get :: Get Int32 #

Persist Int64 # 
Instance details

Defined in Data.Persist

Methods

put :: Int64 -> Put () #

get :: Get Int64 #

Persist Integer # 
Instance details

Defined in Data.Persist

Methods

put :: Integer -> Put () #

get :: Get Integer #

Persist Natural # 
Instance details

Defined in Data.Persist

Methods

put :: Natural -> Put () #

get :: Get Natural #

Persist Ordering # 
Instance details

Defined in Data.Persist

Methods

put :: Ordering -> Put () #

get :: Get Ordering #

Persist Word # 
Instance details

Defined in Data.Persist

Methods

put :: Word -> Put () #

get :: Get Word #

Persist Word8 # 
Instance details

Defined in Data.Persist

Methods

put :: Word8 -> Put () #

get :: Get Word8 #

Persist Word16 # 
Instance details

Defined in Data.Persist

Methods

put :: Word16 -> Put () #

get :: Get Word16 #

Persist Word32 # 
Instance details

Defined in Data.Persist

Methods

put :: Word32 -> Put () #

get :: Get Word32 #

Persist Word64 # 
Instance details

Defined in Data.Persist

Methods

put :: Word64 -> Put () #

get :: Get Word64 #

Persist () # 
Instance details

Defined in Data.Persist

Methods

put :: () -> Put () #

get :: Get () #

Persist All # 
Instance details

Defined in Data.Persist

Methods

put :: All -> Put () #

get :: Get All #

Persist Any # 
Instance details

Defined in Data.Persist

Methods

put :: Any -> Put () #

get :: Get Any #

Persist ShortByteString # 
Instance details

Defined in Data.Persist

Persist ByteString # 
Instance details

Defined in Data.Persist

Methods

put :: ByteString -> Put () #

get :: Get ByteString #

Persist ByteString # 
Instance details

Defined in Data.Persist

Methods

put :: ByteString -> Put () #

get :: Get ByteString #

Persist IntSet # 
Instance details

Defined in Data.Persist

Methods

put :: IntSet -> Put () #

get :: Get IntSet #

Persist Text # 
Instance details

Defined in Data.Persist

Methods

put :: Text -> Put () #

get :: Get Text #

Persist a => Persist [a] #

Persist a list in the following format: Word64 (little endian format) element 1 ... element n

Instance details

Defined in Data.Persist

Methods

put :: [a] -> Put () #

get :: Get [a] #

Persist a => Persist (Maybe a) # 
Instance details

Defined in Data.Persist

Methods

put :: Maybe a -> Put () #

get :: Get (Maybe a) #

Persist a => Persist (Ratio a) # 
Instance details

Defined in Data.Persist

Methods

put :: Ratio a -> Put () #

get :: Get (Ratio a) #

Persist a => Persist (First a) # 
Instance details

Defined in Data.Persist

Methods

put :: First a -> Put () #

get :: Get (First a) #

Persist a => Persist (Last a) # 
Instance details

Defined in Data.Persist

Methods

put :: Last a -> Put () #

get :: Get (Last a) #

Persist a => Persist (Dual a) # 
Instance details

Defined in Data.Persist

Methods

put :: Dual a -> Put () #

get :: Get (Dual a) #

Persist a => Persist (Sum a) # 
Instance details

Defined in Data.Persist

Methods

put :: Sum a -> Put () #

get :: Get (Sum a) #

Persist a => Persist (Product a) # 
Instance details

Defined in Data.Persist

Methods

put :: Product a -> Put () #

get :: Get (Product a) #

Persist e => Persist (NonEmpty e) # 
Instance details

Defined in Data.Persist

Methods

put :: NonEmpty e -> Put () #

get :: Get (NonEmpty e) #

Persist e => Persist (IntMap e) # 
Instance details

Defined in Data.Persist

Methods

put :: IntMap e -> Put () #

get :: Get (IntMap e) #

Persist e => Persist (Tree e) # 
Instance details

Defined in Data.Persist

Methods

put :: Tree e -> Put () #

get :: Get (Tree e) #

Persist e => Persist (Seq e) # 
Instance details

Defined in Data.Persist

Methods

put :: Seq e -> Put () #

get :: Get (Seq e) #

(Ord a, Persist a) => Persist (Set a) # 
Instance details

Defined in Data.Persist

Methods

put :: Set a -> Put () #

get :: Get (Set a) #

Persist (LittleEndian Double) # 
Instance details

Defined in Data.Persist

Persist (LittleEndian Float) # 
Instance details

Defined in Data.Persist

Persist (LittleEndian Int) # 
Instance details

Defined in Data.Persist

Persist (LittleEndian Int16) # 
Instance details

Defined in Data.Persist

Persist (LittleEndian Int32) # 
Instance details

Defined in Data.Persist

Persist (LittleEndian Int64) # 
Instance details

Defined in Data.Persist

Persist (LittleEndian Word) # 
Instance details

Defined in Data.Persist

Persist (LittleEndian Word16) # 
Instance details

Defined in Data.Persist

Persist (LittleEndian Word32) # 
Instance details

Defined in Data.Persist

Persist (LittleEndian Word64) # 
Instance details

Defined in Data.Persist

Persist (BigEndian Double) # 
Instance details

Defined in Data.Persist

Persist (BigEndian Float) # 
Instance details

Defined in Data.Persist

Methods

put :: BigEndian Float -> Put () #

get :: Get (BigEndian Float) #

Persist (BigEndian Int) # 
Instance details

Defined in Data.Persist

Methods

put :: BigEndian Int -> Put () #

get :: Get (BigEndian Int) #

Persist (BigEndian Int16) # 
Instance details

Defined in Data.Persist

Methods

put :: BigEndian Int16 -> Put () #

get :: Get (BigEndian Int16) #

Persist (BigEndian Int32) # 
Instance details

Defined in Data.Persist

Methods

put :: BigEndian Int32 -> Put () #

get :: Get (BigEndian Int32) #

Persist (BigEndian Int64) # 
Instance details

Defined in Data.Persist

Methods

put :: BigEndian Int64 -> Put () #

get :: Get (BigEndian Int64) #

Persist (BigEndian Word) # 
Instance details

Defined in Data.Persist

Methods

put :: BigEndian Word -> Put () #

get :: Get (BigEndian Word) #

Persist (BigEndian Word16) # 
Instance details

Defined in Data.Persist

Persist (BigEndian Word32) # 
Instance details

Defined in Data.Persist

Persist (BigEndian Word64) # 
Instance details

Defined in Data.Persist

(Persist a, Persist b) => Persist (Either a b) # 
Instance details

Defined in Data.Persist

Methods

put :: Either a b -> Put () #

get :: Get (Either a b) #

(Persist a, Persist b) => Persist (a, b) # 
Instance details

Defined in Data.Persist

Methods

put :: (a, b) -> Put () #

get :: Get (a, b) #

(Ord k, Persist k, Persist e) => Persist (Map k e) # 
Instance details

Defined in Data.Persist

Methods

put :: Map k e -> Put () #

get :: Get (Map k e) #

(Persist a, Persist b, Persist c) => Persist (a, b, c) # 
Instance details

Defined in Data.Persist

Methods

put :: (a, b, c) -> Put () #

get :: Get (a, b, c) #

(Persist a, Persist b, Persist c, Persist d) => Persist (a, b, c, d) # 
Instance details

Defined in Data.Persist

Methods

put :: (a, b, c, d) -> Put () #

get :: Get (a, b, c, d) #

(Persist a, Persist b, Persist c, Persist d, Persist e) => Persist (a, b, c, d, e) # 
Instance details

Defined in Data.Persist

Methods

put :: (a, b, c, d, e) -> Put () #

get :: Get (a, b, c, d, e) #

(Persist a, Persist b, Persist c, Persist d, Persist e, Persist f) => Persist (a, b, c, d, e, f) # 
Instance details

Defined in Data.Persist

Methods

put :: (a, b, c, d, e, f) -> Put () #

get :: Get (a, b, c, d, e, f) #

(Persist a, Persist b, Persist c, Persist d, Persist e, Persist f, Persist g) => Persist (a, b, c, d, e, f, g) # 
Instance details

Defined in Data.Persist

Methods

put :: (a, b, c, d, e, f, g) -> Put () #

get :: Get (a, b, c, d, e, f, g) #

Endianness

newtype BigEndian a #

Constructors

BigEndian 

Fields

Instances
Functor BigEndian # 
Instance details

Defined in Data.Persist

Methods

fmap :: (a -> b) -> BigEndian a -> BigEndian b #

(<$) :: a -> BigEndian b -> BigEndian a #

Foldable BigEndian # 
Instance details

Defined in Data.Persist

Methods

fold :: Monoid m => BigEndian m -> m #

foldMap :: Monoid m => (a -> m) -> BigEndian a -> m #

foldr :: (a -> b -> b) -> b -> BigEndian a -> b #

foldr' :: (a -> b -> b) -> b -> BigEndian a -> b #

foldl :: (b -> a -> b) -> b -> BigEndian a -> b #

foldl' :: (b -> a -> b) -> b -> BigEndian a -> b #

foldr1 :: (a -> a -> a) -> BigEndian a -> a #

foldl1 :: (a -> a -> a) -> BigEndian a -> a #

toList :: BigEndian a -> [a] #

null :: BigEndian a -> Bool #

length :: BigEndian a -> Int #

elem :: Eq a => a -> BigEndian a -> Bool #

maximum :: Ord a => BigEndian a -> a #

minimum :: Ord a => BigEndian a -> a #

sum :: Num a => BigEndian a -> a #

product :: Num a => BigEndian a -> a #

Traversable BigEndian # 
Instance details

Defined in Data.Persist

Methods

traverse :: Applicative f => (a -> f b) -> BigEndian a -> f (BigEndian b) #

sequenceA :: Applicative f => BigEndian (f a) -> f (BigEndian a) #

mapM :: Monad m => (a -> m b) -> BigEndian a -> m (BigEndian b) #

sequence :: Monad m => BigEndian (m a) -> m (BigEndian a) #

Eq a => Eq (BigEndian a) # 
Instance details

Defined in Data.Persist

Methods

(==) :: BigEndian a -> BigEndian a -> Bool #

(/=) :: BigEndian a -> BigEndian a -> Bool #

Ord a => Ord (BigEndian a) # 
Instance details

Defined in Data.Persist

Show a => Show (BigEndian a) # 
Instance details

Defined in Data.Persist

Generic (BigEndian a) # 
Instance details

Defined in Data.Persist

Associated Types

type Rep (BigEndian a) :: Type -> Type #

Methods

from :: BigEndian a -> Rep (BigEndian a) x #

to :: Rep (BigEndian a) x -> BigEndian a #

Persist (BigEndian Double) # 
Instance details

Defined in Data.Persist

Persist (BigEndian Float) # 
Instance details

Defined in Data.Persist

Methods

put :: BigEndian Float -> Put () #

get :: Get (BigEndian Float) #

Persist (BigEndian Int) # 
Instance details

Defined in Data.Persist

Methods

put :: BigEndian Int -> Put () #

get :: Get (BigEndian Int) #

Persist (BigEndian Int16) # 
Instance details

Defined in Data.Persist

Methods

put :: BigEndian Int16 -> Put () #

get :: Get (BigEndian Int16) #

Persist (BigEndian Int32) # 
Instance details

Defined in Data.Persist

Methods

put :: BigEndian Int32 -> Put () #

get :: Get (BigEndian Int32) #

Persist (BigEndian Int64) # 
Instance details

Defined in Data.Persist

Methods

put :: BigEndian Int64 -> Put () #

get :: Get (BigEndian Int64) #

Persist (BigEndian Word) # 
Instance details

Defined in Data.Persist

Methods

put :: BigEndian Word -> Put () #

get :: Get (BigEndian Word) #

Persist (BigEndian Word16) # 
Instance details

Defined in Data.Persist

Persist (BigEndian Word32) # 
Instance details

Defined in Data.Persist

Persist (BigEndian Word64) # 
Instance details

Defined in Data.Persist

type Rep (BigEndian a) # 
Instance details

Defined in Data.Persist

type Rep (BigEndian a) = D1 (MetaData "BigEndian" "Data.Persist" "persist-0.1.1.1-LZdYZZuIoGfIu93fLbywS5" True) (C1 (MetaCons "BigEndian" PrefixI True) (S1 (MetaSel (Just "unBE") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 a)))

newtype LittleEndian a #

Constructors

LittleEndian 

Fields

Instances
Functor LittleEndian # 
Instance details

Defined in Data.Persist

Methods

fmap :: (a -> b) -> LittleEndian a -> LittleEndian b #

(<$) :: a -> LittleEndian b -> LittleEndian a #

Foldable LittleEndian # 
Instance details

Defined in Data.Persist

Methods

fold :: Monoid m => LittleEndian m -> m #

foldMap :: Monoid m => (a -> m) -> LittleEndian a -> m #

foldr :: (a -> b -> b) -> b -> LittleEndian a -> b #

foldr' :: (a -> b -> b) -> b -> LittleEndian a -> b #

foldl :: (b -> a -> b) -> b -> LittleEndian a -> b #

foldl' :: (b -> a -> b) -> b -> LittleEndian a -> b #

foldr1 :: (a -> a -> a) -> LittleEndian a -> a #

foldl1 :: (a -> a -> a) -> LittleEndian a -> a #

toList :: LittleEndian a -> [a] #

null :: LittleEndian a -> Bool #

length :: LittleEndian a -> Int #

elem :: Eq a => a -> LittleEndian a -> Bool #

maximum :: Ord a => LittleEndian a -> a #

minimum :: Ord a => LittleEndian a -> a #

sum :: Num a => LittleEndian a -> a #

product :: Num a => LittleEndian a -> a #

Traversable LittleEndian # 
Instance details

Defined in Data.Persist

Methods

traverse :: Applicative f => (a -> f b) -> LittleEndian a -> f (LittleEndian b) #

sequenceA :: Applicative f => LittleEndian (f a) -> f (LittleEndian a) #

mapM :: Monad m => (a -> m b) -> LittleEndian a -> m (LittleEndian b) #

sequence :: Monad m => LittleEndian (m a) -> m (LittleEndian a) #

Eq a => Eq (LittleEndian a) # 
Instance details

Defined in Data.Persist

Ord a => Ord (LittleEndian a) # 
Instance details

Defined in Data.Persist

Show a => Show (LittleEndian a) # 
Instance details

Defined in Data.Persist

Generic (LittleEndian a) # 
Instance details

Defined in Data.Persist

Associated Types

type Rep (LittleEndian a) :: Type -> Type #

Methods

from :: LittleEndian a -> Rep (LittleEndian a) x #

to :: Rep (LittleEndian a) x -> LittleEndian a #

Persist (LittleEndian Double) # 
Instance details

Defined in Data.Persist

Persist (LittleEndian Float) # 
Instance details

Defined in Data.Persist

Persist (LittleEndian Int) # 
Instance details

Defined in Data.Persist

Persist (LittleEndian Int16) # 
Instance details

Defined in Data.Persist

Persist (LittleEndian Int32) # 
Instance details

Defined in Data.Persist

Persist (LittleEndian Int64) # 
Instance details

Defined in Data.Persist

Persist (LittleEndian Word) # 
Instance details

Defined in Data.Persist

Persist (LittleEndian Word16) # 
Instance details

Defined in Data.Persist

Persist (LittleEndian Word32) # 
Instance details

Defined in Data.Persist

Persist (LittleEndian Word64) # 
Instance details

Defined in Data.Persist

type Rep (LittleEndian a) # 
Instance details

Defined in Data.Persist

type Rep (LittleEndian a) = D1 (MetaData "LittleEndian" "Data.Persist" "persist-0.1.1.1-LZdYZZuIoGfIu93fLbywS5" True) (C1 (MetaCons "LittleEndian" PrefixI True) (S1 (MetaSel (Just "unLE") NoSourceUnpackedness NoSourceStrictness DecidedLazy) (Rec0 a)))

Serialization

encode :: Persist a => a -> ByteString #

Encode a value using binary serialization to a strict ByteString.

decode :: Persist a => ByteString -> Either String a #

Decode a value from a strict ByteString, reconstructing the original structure.

The Get type

data Get a #

Instances
Monad Get # 
Instance details

Defined in Data.Persist

Methods

(>>=) :: Get a -> (a -> Get b) -> Get b #

(>>) :: Get a -> Get b -> Get b #

return :: a -> Get a #

fail :: String -> Get a #

Functor Get # 
Instance details

Defined in Data.Persist

Methods

fmap :: (a -> b) -> Get a -> Get b #

(<$) :: a -> Get b -> Get a #

MonadFail Get # 
Instance details

Defined in Data.Persist

Methods

fail :: String -> Get a #

Applicative Get # 
Instance details

Defined in Data.Persist

Methods

pure :: a -> Get a #

(<*>) :: Get (a -> b) -> Get a -> Get b #

liftA2 :: (a -> b -> c) -> Get a -> Get b -> Get c #

(*>) :: Get a -> Get b -> Get b #

(<*) :: Get a -> Get b -> Get a #

runGet :: Get a -> ByteString -> Either String a #

Run the Get monad applies a get-based parser on the input ByteString

ensure :: Int -> Get () #

Ensure that n bytes are available. Fails if fewer than n bytes are available.

skip :: Int -> Get () #

Skip ahead n bytes. Fails if fewer than n bytes are available.

getBytes :: Int -> Get ByteString #

Pull n bytes from the input, as a strict ByteString.

getByteString :: Int -> Get ByteString #

An efficient get method for strict ByteStrings. Fails if fewer than n bytes are left in the input. This function creates a fresh copy of the underlying bytes.

remaining :: Get Int #

Get the number of remaining unparsed bytes. Useful for checking whether all input has been consumed.

eof :: Get () #

The Put type

data Put a #

Instances
Monad Put # 
Instance details

Defined in Data.Persist

Methods

(>>=) :: Put a -> (a -> Put b) -> Put b #

(>>) :: Put a -> Put b -> Put b #

return :: a -> Put a #

fail :: String -> Put a #

Functor Put # 
Instance details

Defined in Data.Persist

Methods

fmap :: (a -> b) -> Put a -> Put b #

(<$) :: a -> Put b -> Put a #

Applicative Put # 
Instance details

Defined in Data.Persist

Methods

pure :: a -> Put a #

(<*>) :: Put (a -> b) -> Put a -> Put b #

liftA2 :: (a -> b -> c) -> Put a -> Put b -> Put c #

(*>) :: Put a -> Put b -> Put b #

(<*) :: Put a -> Put b -> Put a #

evalPut :: Put a -> (a, ByteString) #

grow :: Int -> Put () #

Ensure that n bytes can be written.

putHE :: Persist (HostEndian a) => a -> Put () #

putLE :: Persist (LittleEndian a) => a -> Put () #

putBE :: Persist (BigEndian a) => a -> Put () #