massiv-serialise-0.1.0.0: Compatibility of 'massiv' with 'serialise'
Copyright(c) Alexey Kuleshevich 2021
LicenseBSD3
MaintainerAlexey Kuleshevich <alexey@kuleshevi.ch>
Stabilityexperimental
Portabilitynon-portable
Safe HaskellNone
LanguageHaskell2010

Massiv.Serialise

Description

This package provides instances for Serialise class for all mutable Array representations in massiv package. These instances are provided as orphans from a separate package in order to avoid direct dependency on serialise package in massiv.

Array serialisation is done by falling back onto instances for Vector types from vector package.

Below is a simple example how to use it. Note a blank module import: import Massiv.Serialise (), which is the only thing needed from this module in order to use provided orphan instances.

>>> import Massiv.Serialise ()
>>> import Data.Massiv.Array as A
>>> let arr = A.fromList A.Seq [72,97,115,107,101,108,108] :: A.Vector A.P Int
>>> serialise arr
"\NUL\a\135\CANH\CANa\CANs\CANk\CANe\CANl\CANl"
>>> deserialise (serialise arr) :: A.Vector A.P Int
Array P Seq (Sz1 7)
  [ 72, 97, 115, 107, 101, 108, 108 ]
Synopsis

Helper functions used to define Serialise instances

encodeIx :: forall ix. Index ix => ix -> Encoding Source #

Encode index

Since: 0.1.0

decodeIx :: forall s ix. Index ix => Decoder s ix Source #

Decode index

Since: 0.1.0

mkSzFail :: forall ix m. (Index ix, MonadFail m) => ix -> m (Sz ix) Source #

Construct size from index verifying its correctness.

Since: 0.1.0

encodeArray :: forall v r ix e. (Manifest r ix e, Mutable (ARepr v) ix e, Vector v e, VRepr (ARepr v) ~ v, Serialise ix, Serialise (v e)) => Array r ix e -> Encoding Source #

Encode array by using its corresponding vector instance

Since: 0.1.0

decodeArray :: forall v r ix e s. (Typeable v, Vector v e, Mutable (ARepr v) ix e, Mutable r ix e, Serialise ix, Serialise (v e)) => Decoder s (Array r ix e) Source #

Decode array by using its corresponding vector instance

Since: 0.1.0

Orphan instances

Serialise Ix2 Source # 
Instance details

Serialise Comp Source # 
Instance details

Index (IxN n) => Serialise (IxN n) Source # 
Instance details

Methods

encode :: IxN n -> Encoding #

decode :: Decoder s (IxN n) #

encodeList :: [IxN n] -> Encoding #

decodeList :: Decoder s [IxN n] #

(Index ix, Serialise ix) => Serialise (Sz ix) Source # 
Instance details

Methods

encode :: Sz ix -> Encoding #

decode :: Decoder s (Sz ix) #

encodeList :: [Sz ix] -> Encoding #

decodeList :: Decoder s [Sz ix] #

(Index ix, Serialise ix, Serialise e) => Serialise (Array B ix e) Source # 
Instance details

Methods

encode :: Array B ix e -> Encoding #

decode :: Decoder s (Array B ix e) #

encodeList :: [Array B ix e] -> Encoding #

decodeList :: Decoder s [Array B ix e] #

(Index ix, NFData e, Serialise ix, Serialise e) => Serialise (Array N ix e) Source # 
Instance details

Methods

encode :: Array N ix e -> Encoding #

decode :: Decoder s (Array N ix e) #

encodeList :: [Array N ix e] -> Encoding #

decodeList :: Decoder s [Array N ix e] #

(Index ix, Storable e, Serialise ix, Serialise e) => Serialise (Array S ix e) Source # 
Instance details

Methods

encode :: Array S ix e -> Encoding #

decode :: Decoder s (Array S ix e) #

encodeList :: [Array S ix e] -> Encoding #

decodeList :: Decoder s [Array S ix e] #

(Index ix, Prim e, Serialise ix, Serialise e) => Serialise (Array P ix e) Source # 
Instance details

Methods

encode :: Array P ix e -> Encoding #

decode :: Decoder s (Array P ix e) #

encodeList :: [Array P ix e] -> Encoding #

decodeList :: Decoder s [Array P ix e] #

(Index ix, Unbox e, Serialise ix, Serialise e) => Serialise (Array U ix e) Source # 
Instance details

Methods

encode :: Array U ix e -> Encoding #

decode :: Decoder s (Array U ix e) #

encodeList :: [Array U ix e] -> Encoding #

decodeList :: Decoder s [Array U ix e] #