serialise-0.2.6.0: A binary serialisation library for Haskell values.
Copyright(c) Duncan Coutts 2015-2017
LicenseBSD3-style (see LICENSE.txt)
Maintainerduncan@community.haskell.org
Stabilityexperimental
Portabilitynon-portable (GHC extensions)
Safe HaskellSafe-Inferred
LanguageHaskell2010

Codec.Serialise

Description

This module provides functions to serialise and deserialise Haskell values for storage or transmission, to and from lazy ByteStrings. It also provides a type class and utilities to help you make your types serialisable.

For a full tutorial on using this module, see Codec.Serialise.Tutorial.

Synopsis

High level, one-shot API

The following API exposes a high level interface allowing you to quickly convert between arbitrary Haskell values (which are an instance of Serialise) and lazy ByteStrings.

serialise :: Serialise a => a -> ByteString #

Serialise a Haskell value to an external binary representation.

The output is represented as a lazy ByteString and is constructed incrementally.

Since: 0.2.0.0

deserialise :: Serialise a => ByteString -> a #

Deserialise a Haskell value from the external binary representation (which must have been made using serialise or related function).

Throws: DeserialiseFailure if the given external representation is invalid or does not correspond to a value of the expected type.

Since: 0.2.0.0

deserialiseOrFail :: Serialise a => ByteString -> Either DeserialiseFailure a #

Deserialise a Haskell value from the external binary representation, or get back a DeserialiseFailure.

Since: 0.2.0.0

Deserialisation exceptions

data DeserialiseFailure #

An exception type that may be returned (by pure functions) or thrown (by IO actions) that fail to deserialise a given input.

Since: cborg-0.2.0.0

Constructors

DeserialiseFailure ByteOffset String 

Instances

Instances details
Exception DeserialiseFailure 
Instance details

Defined in Codec.CBOR.Read

Methods

toException :: DeserialiseFailure -> SomeException

fromException :: SomeException -> Maybe DeserialiseFailure

displayException :: DeserialiseFailure -> String

Show DeserialiseFailure 
Instance details

Defined in Codec.CBOR.Read

Methods

showsPrec :: Int -> DeserialiseFailure -> ShowS

show :: DeserialiseFailure -> String

showList :: [DeserialiseFailure] -> ShowS

NFData DeserialiseFailure 
Instance details

Defined in Codec.CBOR.Read

Methods

rnf :: DeserialiseFailure -> ()

Eq DeserialiseFailure 
Instance details

Defined in Codec.CBOR.Read

Incremental encoding interface

The following API allows you to encode or decode CBOR values incrementally, which is useful for large structures that require you to stream values in over time.

serialiseIncremental :: Serialise a => a -> Builder #

Serialise a Haskell value to an external binary representation.

The output is represented as a Builder and is constructed incrementally. The representation as a Builder allows efficient concatenation with other data.

Since: 0.2.0.0

deserialiseIncremental :: Serialise a => ST s (IDecode s a) #

Deserialise a Haskell value from the external binary representation.

This allows input data to be provided incrementally, rather than all in one go. It also gives an explicit representation of deserialisation errors.

Note that the incremental behaviour is only for the input data, not the output value: the final deserialised value is constructed and returned as a whole, not incrementally.

Since: 0.2.0.0

data IDecode s a #

An Incremental decoder, used to represent the result of attempting to run a decoder over a given input, and return a value of type a.

Constructors

Partial (Maybe ByteString -> ST s (IDecode s a))

The decoder has consumed the available input and needs more to continue. Provide Just if more input is available and Nothing otherwise, and you will get a new IDecode.

Done !ByteString !ByteOffset a

The decoder has successfully finished. Except for the output value you also get any unused input as well as the number of bytes consumed.

Fail !ByteString !ByteOffset DeserialiseFailure

The decoder ran into an error. The decoder either used fail or was not provided enough input. Contains any unconsumed input, the number of bytes consumed, and a DeserialiseFailure exception describing the reason why the failure occurred.

The Serialise class

class Serialise a where #

Types that are instances of the Serialise class allow values to be quickly encoded or decoded directly to a CBOR representation, for object transmission or storage.

Since: 0.2.0.0

Minimal complete definition

Nothing

Methods

encode :: a -> Encoding #

Definition for encoding a given type into a binary representation, using the Encoding Monoid.

Since: 0.2.0.0

default encode :: (Generic a, GSerialiseEncode (Rep a)) => a -> Encoding #

decode :: Decoder s a #

Definition of a given Decoder for a type.

Since: 0.2.0.0

default decode :: (Generic a, GSerialiseDecode (Rep a)) => Decoder s a #

encodeList :: [a] -> Encoding #

Utility to support specialised encoding for some list type - used for Char/String instances in this package.

Since: 0.2.0.0

decodeList :: Decoder s [a] #

Utility to support specialised decoding for some list type - used for Char/String instances in this package.

Since: 0.2.0.0

Instances

Instances details
Serialise All #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: All -> Encoding #

decode :: Decoder s All #

encodeList :: [All] -> Encoding #

decodeList :: Decoder s [All] #

Serialise Any #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: Any -> Encoding #

decode :: Decoder s Any #

encodeList :: [Any] -> Encoding #

decodeList :: Decoder s [Any] #

Serialise SomeTypeRep #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: SomeTypeRep -> Encoding #

decode :: Decoder s SomeTypeRep #

encodeList :: [SomeTypeRep] -> Encoding #

decodeList :: Decoder s [SomeTypeRep] #

Serialise Version #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: Version -> Encoding #

decode :: Decoder s Version #

encodeList :: [Version] -> Encoding #

decodeList :: Decoder s [Version] #

Serialise CChar #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: CChar -> Encoding #

decode :: Decoder s CChar #

encodeList :: [CChar] -> Encoding #

decodeList :: Decoder s [CChar] #

Serialise CClock #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: CClock -> Encoding #

decode :: Decoder s CClock #

encodeList :: [CClock] -> Encoding #

decodeList :: Decoder s [CClock] #

Serialise CDouble #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: CDouble -> Encoding #

decode :: Decoder s CDouble #

encodeList :: [CDouble] -> Encoding #

decodeList :: Decoder s [CDouble] #

Serialise CFloat #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: CFloat -> Encoding #

decode :: Decoder s CFloat #

encodeList :: [CFloat] -> Encoding #

decodeList :: Decoder s [CFloat] #

Serialise CInt #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: CInt -> Encoding #

decode :: Decoder s CInt #

encodeList :: [CInt] -> Encoding #

decodeList :: Decoder s [CInt] #

Serialise CIntMax #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: CIntMax -> Encoding #

decode :: Decoder s CIntMax #

encodeList :: [CIntMax] -> Encoding #

decodeList :: Decoder s [CIntMax] #

Serialise CIntPtr #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: CIntPtr -> Encoding #

decode :: Decoder s CIntPtr #

encodeList :: [CIntPtr] -> Encoding #

decodeList :: Decoder s [CIntPtr] #

Serialise CLLong #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: CLLong -> Encoding #

decode :: Decoder s CLLong #

encodeList :: [CLLong] -> Encoding #

decodeList :: Decoder s [CLLong] #

Serialise CLong #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: CLong -> Encoding #

decode :: Decoder s CLong #

encodeList :: [CLong] -> Encoding #

decodeList :: Decoder s [CLong] #

Serialise CPtrdiff #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: CPtrdiff -> Encoding #

decode :: Decoder s CPtrdiff #

encodeList :: [CPtrdiff] -> Encoding #

decodeList :: Decoder s [CPtrdiff] #

Serialise CSChar #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: CSChar -> Encoding #

decode :: Decoder s CSChar #

encodeList :: [CSChar] -> Encoding #

decodeList :: Decoder s [CSChar] #

Serialise CSUSeconds #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: CSUSeconds -> Encoding #

decode :: Decoder s CSUSeconds #

encodeList :: [CSUSeconds] -> Encoding #

decodeList :: Decoder s [CSUSeconds] #

Serialise CShort #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: CShort -> Encoding #

decode :: Decoder s CShort #

encodeList :: [CShort] -> Encoding #

decodeList :: Decoder s [CShort] #

Serialise CSigAtomic #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: CSigAtomic -> Encoding #

decode :: Decoder s CSigAtomic #

encodeList :: [CSigAtomic] -> Encoding #

decodeList :: Decoder s [CSigAtomic] #

Serialise CSize #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: CSize -> Encoding #

decode :: Decoder s CSize #

encodeList :: [CSize] -> Encoding #

decodeList :: Decoder s [CSize] #

Serialise CTime #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: CTime -> Encoding #

decode :: Decoder s CTime #

encodeList :: [CTime] -> Encoding #

decodeList :: Decoder s [CTime] #

Serialise CUChar #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: CUChar -> Encoding #

decode :: Decoder s CUChar #

encodeList :: [CUChar] -> Encoding #

decodeList :: Decoder s [CUChar] #

Serialise CUInt #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: CUInt -> Encoding #

decode :: Decoder s CUInt #

encodeList :: [CUInt] -> Encoding #

decodeList :: Decoder s [CUInt] #

Serialise CUIntMax #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: CUIntMax -> Encoding #

decode :: Decoder s CUIntMax #

encodeList :: [CUIntMax] -> Encoding #

decodeList :: Decoder s [CUIntMax] #

Serialise CUIntPtr #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: CUIntPtr -> Encoding #

decode :: Decoder s CUIntPtr #

encodeList :: [CUIntPtr] -> Encoding #

decodeList :: Decoder s [CUIntPtr] #

Serialise CULLong #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: CULLong -> Encoding #

decode :: Decoder s CULLong #

encodeList :: [CULLong] -> Encoding #

decodeList :: Decoder s [CULLong] #

Serialise CULong #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: CULong -> Encoding #

decode :: Decoder s CULong #

encodeList :: [CULong] -> Encoding #

decodeList :: Decoder s [CULong] #

Serialise CUSeconds #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: CUSeconds -> Encoding #

decode :: Decoder s CUSeconds #

encodeList :: [CUSeconds] -> Encoding #

decodeList :: Decoder s [CUSeconds] #

Serialise CUShort #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: CUShort -> Encoding #

decode :: Decoder s CUShort #

encodeList :: [CUShort] -> Encoding #

decodeList :: Decoder s [CUShort] #

Serialise CWchar #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: CWchar -> Encoding #

decode :: Decoder s CWchar #

encodeList :: [CWchar] -> Encoding #

decodeList :: Decoder s [CWchar] #

Serialise Void #

Since: 0.2.4.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: Void -> Encoding #

decode :: Decoder s Void #

encodeList :: [Void] -> Encoding #

decodeList :: Decoder s [Void] #

Serialise Fingerprint #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: Fingerprint -> Encoding #

decode :: Decoder s Fingerprint #

encodeList :: [Fingerprint] -> Encoding #

decodeList :: Decoder s [Fingerprint] #

Serialise ExitCode #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: ExitCode -> Encoding #

decode :: Decoder s ExitCode #

encodeList :: [ExitCode] -> Encoding #

decodeList :: Decoder s [ExitCode] #

Serialise Int16 #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: Int16 -> Encoding #

decode :: Decoder s Int16 #

encodeList :: [Int16] -> Encoding #

decodeList :: Decoder s [Int16] #

Serialise Int32 #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: Int32 -> Encoding #

decode :: Decoder s Int32 #

encodeList :: [Int32] -> Encoding #

decodeList :: Decoder s [Int32] #

Serialise Int64 #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: Int64 -> Encoding #

decode :: Decoder s Int64 #

encodeList :: [Int64] -> Encoding #

decodeList :: Decoder s [Int64] #

Serialise Int8 #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: Int8 -> Encoding #

decode :: Decoder s Int8 #

encodeList :: [Int8] -> Encoding #

decodeList :: Decoder s [Int8] #

Serialise Word16 #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: Word16 -> Encoding #

decode :: Decoder s Word16 #

encodeList :: [Word16] -> Encoding #

decodeList :: Decoder s [Word16] #

Serialise Word32 #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: Word32 -> Encoding #

decode :: Decoder s Word32 #

encodeList :: [Word32] -> Encoding #

decodeList :: Decoder s [Word32] #

Serialise Word64 #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: Word64 -> Encoding #

decode :: Decoder s Word64 #

encodeList :: [Word64] -> Encoding #

decodeList :: Decoder s [Word64] #

Serialise Word8 #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: Word8 -> Encoding #

decode :: Decoder s Word8 #

encodeList :: [Word8] -> Encoding #

decodeList :: Decoder s [Word8] #

Serialise ByteString #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: ByteString -> Encoding #

decode :: Decoder s ByteString #

encodeList :: [ByteString] -> Encoding #

decodeList :: Decoder s [ByteString] #

Serialise ByteString #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: ByteString -> Encoding #

decode :: Decoder s ByteString #

encodeList :: [ByteString] -> Encoding #

decodeList :: Decoder s [ByteString] #

Serialise ShortByteString #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: ShortByteString -> Encoding #

decode :: Decoder s ShortByteString #

encodeList :: [ShortByteString] -> Encoding #

decodeList :: Decoder s [ShortByteString] #

Serialise Term #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Serialise IntSet #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: IntSet -> Encoding #

decode :: Decoder s IntSet #

encodeList :: [IntSet] -> Encoding #

decodeList :: Decoder s [IntSet] #

Serialise KindRep #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: KindRep -> Encoding #

decode :: Decoder s KindRep #

encodeList :: [KindRep] -> Encoding #

decodeList :: Decoder s [KindRep] #

Serialise Ordering #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: Ordering -> Encoding #

decode :: Decoder s Ordering #

encodeList :: [Ordering] -> Encoding #

decodeList :: Decoder s [Ordering] #

Serialise TyCon #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: TyCon -> Encoding #

decode :: Decoder s TyCon #

encodeList :: [TyCon] -> Encoding #

decodeList :: Decoder s [TyCon] #

Serialise TypeLitSort #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: TypeLitSort -> Encoding #

decode :: Decoder s TypeLitSort #

encodeList :: [TypeLitSort] -> Encoding #

decodeList :: Decoder s [TypeLitSort] #

Serialise Half #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Serialise Text #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: Text -> Encoding #

decode :: Decoder s Text #

encodeList :: [Text] -> Encoding #

decodeList :: Decoder s [Text] #

Serialise Text #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: Text -> Encoding #

decode :: Decoder s Text #

encodeList :: [Text] -> Encoding #

decodeList :: Decoder s [Text] #

Serialise UTCTime #

UTCTime is encoded using the extended time format which is currently in Internet Draft state, https://tools.ietf.org/html/draft-bormann-cbor-time-tag-00.

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: UTCTime -> Encoding #

decode :: Decoder s UTCTime #

encodeList :: [UTCTime] -> Encoding #

decodeList :: Decoder s [UTCTime] #

Serialise Integer #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: Integer -> Encoding #

decode :: Decoder s Integer #

encodeList :: [Integer] -> Encoding #

decodeList :: Decoder s [Integer] #

Serialise Natural #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: Natural -> Encoding #

decode :: Decoder s Natural #

encodeList :: [Natural] -> Encoding #

decodeList :: Decoder s [Natural] #

Serialise () #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: () -> Encoding #

decode :: Decoder s () #

encodeList :: [()] -> Encoding #

decodeList :: Decoder s [()] #

Serialise Bool #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: Bool -> Encoding #

decode :: Decoder s Bool #

encodeList :: [Bool] -> Encoding #

decodeList :: Decoder s [Bool] #

Serialise Char #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: Char -> Encoding #

decode :: Decoder s Char #

encodeList :: [Char] -> Encoding #

decodeList :: Decoder s [Char] #

Serialise Double #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: Double -> Encoding #

decode :: Decoder s Double #

encodeList :: [Double] -> Encoding #

decodeList :: Decoder s [Double] #

Serialise Float #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: Float -> Encoding #

decode :: Decoder s Float #

encodeList :: [Float] -> Encoding #

decodeList :: Decoder s [Float] #

Serialise Int #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: Int -> Encoding #

decode :: Decoder s Int #

encodeList :: [Int] -> Encoding #

decodeList :: Decoder s [Int] #

Serialise Levity #

Since: 0.2.6.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: Levity -> Encoding #

decode :: Decoder s Levity #

encodeList :: [Levity] -> Encoding #

decodeList :: Decoder s [Levity] #

Serialise RuntimeRep #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: RuntimeRep -> Encoding #

decode :: Decoder s RuntimeRep #

encodeList :: [RuntimeRep] -> Encoding #

decodeList :: Decoder s [RuntimeRep] #

Serialise VecCount #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: VecCount -> Encoding #

decode :: Decoder s VecCount #

encodeList :: [VecCount] -> Encoding #

decodeList :: Decoder s [VecCount] #

Serialise VecElem #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: VecElem -> Encoding #

decode :: Decoder s VecElem #

encodeList :: [VecElem] -> Encoding #

decodeList :: Decoder s [VecElem] #

Serialise Word #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: Word -> Encoding #

decode :: Decoder s Word #

encodeList :: [Word] -> Encoding #

decodeList :: Decoder s [Word] #

Serialise a => Serialise (ZipList a) #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: ZipList a -> Encoding #

decode :: Decoder s (ZipList a) #

encodeList :: [ZipList a] -> Encoding #

decodeList :: Decoder s [ZipList a] #

Serialise a => Serialise (Complex a) #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: Complex a -> Encoding #

decode :: Decoder s (Complex a) #

encodeList :: [Complex a] -> Encoding #

decodeList :: Decoder s [Complex a] #

Serialise a => Serialise (Identity a) #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: Identity a -> Encoding #

decode :: Decoder s (Identity a) #

encodeList :: [Identity a] -> Encoding #

decodeList :: Decoder s [Identity a] #

Serialise a => Serialise (First a) #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: First a -> Encoding #

decode :: Decoder s (First a) #

encodeList :: [First a] -> Encoding #

decodeList :: Decoder s [First a] #

Serialise a => Serialise (Last a) #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: Last a -> Encoding #

decode :: Decoder s (Last a) #

encodeList :: [Last a] -> Encoding #

decodeList :: Decoder s [Last a] #

Serialise a => Serialise (Down a) #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: Down a -> Encoding #

decode :: Decoder s (Down a) #

encodeList :: [Down a] -> Encoding #

decodeList :: Decoder s [Down a] #

Serialise a => Serialise (First a) #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: First a -> Encoding #

decode :: Decoder s (First a) #

encodeList :: [First a] -> Encoding #

decodeList :: Decoder s [First a] #

Serialise a => Serialise (Last a) #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: Last a -> Encoding #

decode :: Decoder s (Last a) #

encodeList :: [Last a] -> Encoding #

decodeList :: Decoder s [Last a] #

Serialise a => Serialise (Max a) #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: Max a -> Encoding #

decode :: Decoder s (Max a) #

encodeList :: [Max a] -> Encoding #

decodeList :: Decoder s [Max a] #

Serialise a => Serialise (Min a) #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: Min a -> Encoding #

decode :: Decoder s (Min a) #

encodeList :: [Min a] -> Encoding #

decodeList :: Decoder s [Min a] #

Serialise a => Serialise (WrappedMonoid a) # 
Instance details

Defined in Codec.Serialise.Class

Methods

encode :: WrappedMonoid a -> Encoding #

decode :: Decoder s (WrappedMonoid a) #

encodeList :: [WrappedMonoid a] -> Encoding #

decodeList :: Decoder s [WrappedMonoid a] #

Serialise a => Serialise (Dual a) #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: Dual a -> Encoding #

decode :: Decoder s (Dual a) #

encodeList :: [Dual a] -> Encoding #

decodeList :: Decoder s [Dual a] #

Serialise a => Serialise (Product a) #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: Product a -> Encoding #

decode :: Decoder s (Product a) #

encodeList :: [Product a] -> Encoding #

decodeList :: Decoder s [Product a] #

Serialise a => Serialise (Sum a) #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: Sum a -> Encoding #

decode :: Decoder s (Sum a) #

encodeList :: [Sum a] -> Encoding #

decodeList :: Decoder s [Sum a] #

Serialise a => Serialise (NonEmpty a) #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: NonEmpty a -> Encoding #

decode :: Decoder s (NonEmpty a) #

encodeList :: [NonEmpty a] -> Encoding #

decodeList :: Decoder s [NonEmpty a] #

(Serialise a, Integral a) => Serialise (Ratio a) #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: Ratio a -> Encoding #

decode :: Decoder s (Ratio a) #

encodeList :: [Ratio a] -> Encoding #

decodeList :: Decoder s [Ratio a] #

Serialise a => Serialise (IntMap a) #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: IntMap a -> Encoding #

decode :: Decoder s (IntMap a) #

encodeList :: [IntMap a] -> Encoding #

decodeList :: Decoder s [IntMap a] #

Serialise a => Serialise (Seq a) #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: Seq a -> Encoding #

decode :: Decoder s (Seq a) #

encodeList :: [Seq a] -> Encoding #

decodeList :: Decoder s [Seq a] #

(Ord a, Serialise a) => Serialise (Set a) #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: Set a -> Encoding #

decode :: Decoder s (Set a) #

encodeList :: [Set a] -> Encoding #

decodeList :: Decoder s [Set a] #

Serialise a => Serialise (Tree a) #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: Tree a -> Encoding #

decode :: Decoder s (Tree a) #

encodeList :: [Tree a] -> Encoding #

decodeList :: Decoder s [Tree a] #

Serialise a => Serialise (Maybe a) #

Since: 0.2.4.0

Instance details

Defined in Codec.Serialise.Class

(Serialise a, Hashable a, Eq a) => Serialise (HashSet a) #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Serialise a => Serialise (Vector a) #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

(Serialise a, Prim a) => Serialise (Vector a) #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

(Serialise a, Storable a) => Serialise (Vector a) #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

(Serialise a, Unbox a) => Serialise (Vector a) #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Serialise a => Serialise (Maybe a) #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: Maybe a -> Encoding #

decode :: Decoder s (Maybe a) #

encodeList :: [Maybe a] -> Encoding #

decodeList :: Decoder s [Maybe a] #

Serialise a => Serialise [a] #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: [a] -> Encoding #

decode :: Decoder s [a] #

encodeList :: [[a]] -> Encoding #

decodeList :: Decoder s [[a]] #

(Serialise a, Serialise b) => Serialise (Either a b) #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: Either a b -> Encoding #

decode :: Decoder s (Either a b) #

encodeList :: [Either a b] -> Encoding #

decodeList :: Decoder s [Either a b] #

Serialise (Fixed e) #

Values are serialised in units of least precision represented as Integer.

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: Fixed e -> Encoding #

decode :: Decoder s (Fixed e) #

encodeList :: [Fixed e] -> Encoding #

decodeList :: Decoder s [Fixed e] #

Serialise (Proxy a) #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: Proxy a -> Encoding #

decode :: Decoder s (Proxy a) #

encodeList :: [Proxy a] -> Encoding #

decodeList :: Decoder s [Proxy a] #

Typeable a => Serialise (TypeRep a) #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: TypeRep a -> Encoding #

decode :: Decoder s (TypeRep a) #

encodeList :: [TypeRep a] -> Encoding #

decodeList :: Decoder s [TypeRep a] #

(Ord k, Serialise k, Serialise v) => Serialise (Map k v) #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: Map k v -> Encoding #

decode :: Decoder s (Map k v) #

encodeList :: [Map k v] -> Encoding #

decodeList :: Decoder s [Map k v] #

(Serialise a, Serialise b) => Serialise (Either a b) #

Since: 0.2.4.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: Either a b -> Encoding #

decode :: Decoder s (Either a b) #

encodeList :: [Either a b] -> Encoding #

decodeList :: Decoder s [Either a b] #

(Serialise a, Serialise b) => Serialise (These a b) #

Since: 0.2.4.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: These a b -> Encoding #

decode :: Decoder s (These a b) #

encodeList :: [These a b] -> Encoding #

decodeList :: Decoder s [These a b] #

(Serialise a, Serialise b) => Serialise (Pair a b) #

Since: 0.2.4.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: Pair a b -> Encoding #

decode :: Decoder s (Pair a b) #

encodeList :: [Pair a b] -> Encoding #

decodeList :: Decoder s [Pair a b] #

(Serialise a, Serialise b) => Serialise (These a b) #

Since: 0.2.4.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: These a b -> Encoding #

decode :: Decoder s (These a b) #

encodeList :: [These a b] -> Encoding #

decodeList :: Decoder s [These a b] #

(Serialise k, Hashable k, Eq k, Serialise v) => Serialise (HashMap k v) #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: HashMap k v -> Encoding #

decode :: Decoder s (HashMap k v) #

encodeList :: [HashMap k v] -> Encoding #

decodeList :: Decoder s [HashMap k v] #

(Serialise a, Serialise b) => Serialise (a, b) #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: (a, b) -> Encoding #

decode :: Decoder s (a, b) #

encodeList :: [(a, b)] -> Encoding #

decodeList :: Decoder s [(a, b)] #

Serialise a => Serialise (Const a b) #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: Const a b -> Encoding #

decode :: Decoder s (Const a b) #

encodeList :: [Const a b] -> Encoding #

decodeList :: Decoder s [Const a b] #

Serialise (f a) => Serialise (Alt f a) #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: Alt f a -> Encoding #

decode :: Decoder s (Alt f a) #

encodeList :: [Alt f a] -> Encoding #

decodeList :: Decoder s [Alt f a] #

(Serialise a, Serialise b, Serialise c) => Serialise (a, b, c) #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: (a, b, c) -> Encoding #

decode :: Decoder s (a, b, c) #

encodeList :: [(a, b, c)] -> Encoding #

decodeList :: Decoder s [(a, b, c)] #

(Serialise a, Serialise b, Serialise c, Serialise d) => Serialise (a, b, c, d) #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: (a, b, c, d) -> Encoding #

decode :: Decoder s (a, b, c, d) #

encodeList :: [(a, b, c, d)] -> Encoding #

decodeList :: Decoder s [(a, b, c, d)] #

(Serialise a, Serialise b, Serialise c, Serialise d, Serialise e) => Serialise (a, b, c, d, e) #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: (a, b, c, d, e) -> Encoding #

decode :: Decoder s (a, b, c, d, e) #

encodeList :: [(a, b, c, d, e)] -> Encoding #

decodeList :: Decoder s [(a, b, c, d, e)] #

(Serialise a, Serialise b, Serialise c, Serialise d, Serialise e, Serialise f) => Serialise (a, b, c, d, e, f) #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: (a, b, c, d, e, f) -> Encoding #

decode :: Decoder s (a, b, c, d, e, f) #

encodeList :: [(a, b, c, d, e, f)] -> Encoding #

decodeList :: Decoder s [(a, b, c, d, e, f)] #

(Serialise a, Serialise b, Serialise c, Serialise d, Serialise e, Serialise f, Serialise g) => Serialise (a, b, c, d, e, f, g) #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: (a, b, c, d, e, f, g) -> Encoding #

decode :: Decoder s (a, b, c, d, e, f, g) #

encodeList :: [(a, b, c, d, e, f, g)] -> Encoding #

decodeList :: Decoder s [(a, b, c, d, e, f, g)] #

(Serialise a, Serialise b, Serialise c, Serialise d, Serialise e, Serialise f, Serialise g, Serialise h) => Serialise (a, b, c, d, e, f, g, h) #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: (a, b, c, d, e, f, g, h) -> Encoding #

decode :: Decoder s (a, b, c, d, e, f, g, h) #

encodeList :: [(a, b, c, d, e, f, g, h)] -> Encoding #

decodeList :: Decoder s [(a, b, c, d, e, f, g, h)] #

(Serialise a, Serialise b, Serialise c, Serialise d, Serialise e, Serialise f, Serialise g, Serialise h, Serialise i) => Serialise (a, b, c, d, e, f, g, h, i) #

Since: 0.2.0.0

Instance details

Defined in Codec.Serialise.Class

Methods

encode :: (a, b, c, d, e, f, g, h, i) -> Encoding #

decode :: Decoder s (a, b, c, d, e, f, g, h, i) #

encodeList :: [(a, b, c, d, e, f, g, h, i)] -> Encoding #

decodeList :: Decoder s [(a, b, c, d, e, f, g, h, i)] #

IO operations

Convenient utilities for basic IO operations.

FilePath API

writeFileSerialise #

Arguments

:: Serialise a 
=> FilePath

The file to write to.

-> a

The value to be serialised and written.

-> IO () 

Serialise a ByteString and write it directly to the specified file.

Since: 0.2.0.0

readFileDeserialise #

Arguments

:: Serialise a 
=> FilePath

The file to read from.

-> IO a

The deserialised value.

Read the specified file (internally, by reading a ByteString) and attempt to decode it into a Haskell value using deserialise (the type of which is determined by the choice of the result type).

Throws: DeserialiseFailure if the file fails to deserialise properly.

Since: 0.2.0.0

Handle API

hPutSerialise #

Arguments

:: Serialise a 
=> Handle

The Handle to write to.

-> a

The value to be serialised and written.

-> IO () 

Serialise a ByteString (via serialise) and write it directly to the specified Handle.

Since: 0.2.0.0