symbolic-base-0.1.0.0: ZkFold Symbolic compiler and zero-knowledge proof protocols
Safe HaskellSafe-Inferred
LanguageHaskell2010

ZkFold.Base.Data.ByteString

Synopsis

Documentation

class Binary t where #

The Binary class provides put and get, methods to encode and decode a Haskell value to a lazy ByteString. It mirrors the Read and Show classes for textual representation of Haskell types, and is suitable for serialising Haskell values to disk, over the network.

For decoding and generating simple external binary formats (e.g. C structures), Binary may be used, but in general is not suitable for complex protocols. Instead use the PutM and Get primitives directly.

Instances of Binary should satisfy the following property:

decode . encode == id

That is, the get and put methods should be the inverse of each other. A range of instances are provided for basic Haskell types.

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

putList :: [t] -> Put #

Encode a list of values in the Put monad. The default implementation may be overridden to be more efficient but must still have the same encoding format.

Instances

Instances details
Binary All

Since: binary-0.8.4.0

Instance details

Defined in Data.Binary.Class

Methods

put :: All -> Put #

get :: Get All #

putList :: [All] -> Put #

Binary Any

Since: binary-0.8.4.0

Instance details

Defined in Data.Binary.Class

Methods

put :: Any -> Put #

get :: Get Any #

putList :: [Any] -> Put #

Binary SomeTypeRep 
Instance details

Defined in Data.Binary.Class

Binary Version

Since: binary-0.8.0.0

Instance details

Defined in Data.Binary.Class

Methods

put :: Version -> Put #

get :: Get Version #

putList :: [Version] -> Put #

Binary Void

Since: binary-0.8.0.0

Instance details

Defined in Data.Binary.Class

Methods

put :: Void -> Put #

get :: Get Void #

putList :: [Void] -> Put #

Binary Fingerprint

Since: binary-0.7.6.0

Instance details

Defined in Data.Binary.Class

Binary Int16 
Instance details

Defined in Data.Binary.Class

Methods

put :: Int16 -> Put #

get :: Get Int16 #

putList :: [Int16] -> Put #

Binary Int32 
Instance details

Defined in Data.Binary.Class

Methods

put :: Int32 -> Put #

get :: Get Int32 #

putList :: [Int32] -> Put #

Binary Int64 
Instance details

Defined in Data.Binary.Class

Methods

put :: Int64 -> Put #

get :: Get Int64 #

putList :: [Int64] -> Put #

Binary Int8 
Instance details

Defined in Data.Binary.Class

Methods

put :: Int8 -> Put #

get :: Get Int8 #

putList :: [Int8] -> Put #

Binary Word16 
Instance details

Defined in Data.Binary.Class

Methods

put :: Word16 -> Put #

get :: Get Word16 #

putList :: [Word16] -> Put #

Binary Word32 
Instance details

Defined in Data.Binary.Class

Methods

put :: Word32 -> Put #

get :: Get Word32 #

putList :: [Word32] -> Put #

Binary Word64 
Instance details

Defined in Data.Binary.Class

Methods

put :: Word64 -> Put #

get :: Get Word64 #

putList :: [Word64] -> Put #

Binary Word8 
Instance details

Defined in Data.Binary.Class

Methods

put :: Word8 -> Put #

get :: Get Word8 #

putList :: [Word8] -> Put #

Binary ByteString 
Instance details

Defined in Data.Binary.Class

Binary ByteString 
Instance details

Defined in Data.Binary.Class

Binary ShortByteString 
Instance details

Defined in Data.Binary.Class

Binary IntSet 
Instance details

Defined in Data.Binary.Class

Methods

put :: IntSet -> Put #

get :: Get IntSet #

putList :: [IntSet] -> Put #

Binary KindRep

Since: binary-0.8.5.0

Instance details

Defined in Data.Binary.Class

Methods

put :: KindRep -> Put #

get :: Get KindRep #

putList :: [KindRep] -> Put #

Binary Ordering 
Instance details

Defined in Data.Binary.Class

Methods

put :: Ordering -> Put #

get :: Get Ordering #

putList :: [Ordering] -> Put #

Binary TyCon

Since: binary-0.8.5.0

Instance details

Defined in Data.Binary.Class

Methods

put :: TyCon -> Put #

get :: Get TyCon #

putList :: [TyCon] -> Put #

Binary TypeLitSort

Since: binary-0.8.5.0

Instance details

Defined in Data.Binary.Class

Binary Scientific

Note that in the future I intend to change the type of the base10Exponent from Int to Integer. To be forward compatible the Binary instance already encodes the exponent as Integer.

Instance details

Defined in Data.Scientific

Binary BigEndian Source # 
Instance details

Defined in ZkFold.Base.Data.ByteString

Binary LittleEndian Source # 
Instance details

Defined in ZkFold.Base.Data.ByteString

Binary Prec Source # 
Instance details

Defined in ZkFold.Symbolic.Compiler.ArithmeticCircuit.MerkleHash

Methods

put :: Prec -> Put #

get :: Get Prec #

putList :: [Prec] -> Put #

Binary ShortText

The Binary encoding matches the one for Text

Instance details

Defined in Data.Text.Short.Internal

Binary UUID

This Binary instance is compatible with RFC 4122, storing the fields in network order as 16 bytes.

Instance details

Defined in Data.UUID.Types.Internal

Methods

put :: UUID -> Put #

get :: Get UUID #

putList :: [UUID] -> Put #

Binary Integer 
Instance details

Defined in Data.Binary.Class

Methods

put :: Integer -> Put #

get :: Get Integer #

putList :: [Integer] -> Put #

Binary Natural

Since: binary-0.7.3.0

Instance details

Defined in Data.Binary.Class

Methods

put :: Natural -> Put #

get :: Get Natural #

putList :: [Natural] -> Put #

Binary () 
Instance details

Defined in Data.Binary.Class

Methods

put :: () -> Put #

get :: Get () #

putList :: [()] -> Put #

Binary Bool 
Instance details

Defined in Data.Binary.Class

Methods

put :: Bool -> Put #

get :: Get Bool #

putList :: [Bool] -> Put #

Binary Char 
Instance details

Defined in Data.Binary.Class

Methods

put :: Char -> Put #

get :: Get Char #

putList :: [Char] -> Put #

Binary Double 
Instance details

Defined in Data.Binary.Class

Methods

put :: Double -> Put #

get :: Get Double #

putList :: [Double] -> Put #

Binary Float 
Instance details

Defined in Data.Binary.Class

Methods

put :: Float -> Put #

get :: Get Float #

putList :: [Float] -> Put #

Binary Int 
Instance details

Defined in Data.Binary.Class

Methods

put :: Int -> Put #

get :: Get Int #

putList :: [Int] -> Put #

Binary RuntimeRep

Since: binary-0.8.5.0

Instance details

Defined in Data.Binary.Class

Binary VecCount

Since: binary-0.8.5.0

Instance details

Defined in Data.Binary.Class

Methods

put :: VecCount -> Put #

get :: Get VecCount #

putList :: [VecCount] -> Put #

Binary VecElem

Since: binary-0.8.5.0

Instance details

Defined in Data.Binary.Class

Methods

put :: VecElem -> Put #

get :: Get VecElem #

putList :: [VecElem] -> Put #

Binary Word 
Instance details

Defined in Data.Binary.Class

Methods

put :: Word -> Put #

get :: Get Word #

putList :: [Word] -> Put #

Binary a => Binary (Complex a) 
Instance details

Defined in Data.Binary.Class

Methods

put :: Complex a -> Put #

get :: Get (Complex a) #

putList :: [Complex a] -> Put #

Binary a => Binary (Identity a) 
Instance details

Defined in Data.Binary.Class

Methods

put :: Identity a -> Put #

get :: Get (Identity a) #

putList :: [Identity a] -> Put #

Binary a => Binary (First a)

Since: binary-0.8.4.0

Instance details

Defined in Data.Binary.Class

Methods

put :: First a -> Put #

get :: Get (First a) #

putList :: [First a] -> Put #

Binary a => Binary (Last a)

Since: binary-0.8.4.0

Instance details

Defined in Data.Binary.Class

Methods

put :: Last a -> Put #

get :: Get (Last a) #

putList :: [Last a] -> Put #

Binary a => Binary (First a)

Since: binary-0.8.4.0

Instance details

Defined in Data.Binary.Class

Methods

put :: First a -> Put #

get :: Get (First a) #

putList :: [First a] -> Put #

Binary a => Binary (Last a)

Since: binary-0.8.4.0

Instance details

Defined in Data.Binary.Class

Methods

put :: Last a -> Put #

get :: Get (Last a) #

putList :: [Last a] -> Put #

Binary a => Binary (Max a)

Since: binary-0.8.4.0

Instance details

Defined in Data.Binary.Class

Methods

put :: Max a -> Put #

get :: Get (Max a) #

putList :: [Max a] -> Put #

Binary a => Binary (Min a)

Since: binary-0.8.4.0

Instance details

Defined in Data.Binary.Class

Methods

put :: Min a -> Put #

get :: Get (Min a) #

putList :: [Min a] -> Put #

Binary m => Binary (WrappedMonoid m)

Since: binary-0.8.4.0

Instance details

Defined in Data.Binary.Class

Binary a => Binary (Dual a)

Since: binary-0.8.4.0

Instance details

Defined in Data.Binary.Class

Methods

put :: Dual a -> Put #

get :: Get (Dual a) #

putList :: [Dual a] -> Put #

Binary a => Binary (Product a)

Since: binary-0.8.4.0

Instance details

Defined in Data.Binary.Class

Methods

put :: Product a -> Put #

get :: Get (Product a) #

putList :: [Product a] -> Put #

Binary a => Binary (Sum a)

Since: binary-0.8.4.0

Instance details

Defined in Data.Binary.Class

Methods

put :: Sum a -> Put #

get :: Get (Sum a) #

putList :: [Sum a] -> Put #

Binary a => Binary (NonEmpty a)

Since: binary-0.8.4.0

Instance details

Defined in Data.Binary.Class

Methods

put :: NonEmpty a -> Put #

get :: Get (NonEmpty a) #

putList :: [NonEmpty a] -> Put #

(Binary a, Integral a) => Binary (Ratio a) 
Instance details

Defined in Data.Binary.Class

Methods

put :: Ratio a -> Put #

get :: Get (Ratio a) #

putList :: [Ratio a] -> Put #

Binary e => Binary (IntMap e) 
Instance details

Defined in Data.Binary.Class

Methods

put :: IntMap e -> Put #

get :: Get (IntMap e) #

putList :: [IntMap e] -> Put #

Binary e => Binary (Seq e) 
Instance details

Defined in Data.Binary.Class

Methods

put :: Seq e -> Put #

get :: Get (Seq e) #

putList :: [Seq e] -> Put #

Binary a => Binary (Set a) 
Instance details

Defined in Data.Binary.Class

Methods

put :: Set a -> Put #

get :: Get (Set a) #

putList :: [Set a] -> Put #

Binary e => Binary (Tree e) 
Instance details

Defined in Data.Binary.Class

Methods

put :: Tree e -> Put #

get :: Get (Tree e) #

putList :: [Tree e] -> Put #

Binary a => Binary (Maybe a) 
Instance details

Defined in Data.Strict.Maybe

Methods

put :: Maybe a -> Put #

get :: Get (Maybe a) #

putList :: [Maybe a] -> Put #

KnownNat p => Binary (Zp p) Source # 
Instance details

Defined in ZkFold.Base.Algebra.Basic.Field

Methods

put :: Zp p -> Put #

get :: Get (Zp p) #

putList :: [Zp p] -> Put #

Binary (MerkleHash n) Source # 
Instance details

Defined in ZkFold.Symbolic.Compiler.ArithmeticCircuit.MerkleHash

Methods

put :: MerkleHash n -> Put #

get :: Get (MerkleHash n) #

putList :: [MerkleHash n] -> Put #

Binary a => Binary (Maybe a) 
Instance details

Defined in Data.Binary.Class

Methods

put :: Maybe a -> Put #

get :: Get (Maybe a) #

putList :: [Maybe a] -> Put #

Binary a => Binary [a] 
Instance details

Defined in Data.Binary.Class

Methods

put :: [a] -> Put #

get :: Get [a] #

putList :: [[a]] -> Put #

(Binary i, Ix i, Binary e, IArray UArray e) => Binary (UArray i e) 
Instance details

Defined in Data.Binary.Class

Methods

put :: UArray i e -> Put #

get :: Get (UArray i e) #

putList :: [UArray i e] -> Put #

(Binary a, Binary b) => Binary (Either a b) 
Instance details

Defined in Data.Binary.Class

Methods

put :: Either a b -> Put #

get :: Get (Either a b) #

putList :: [Either a b] -> Put #

Binary (Fixed a)

Since: binary-0.8.0.0

Instance details

Defined in Data.Binary.Class

Methods

put :: Fixed a -> Put #

get :: Get (Fixed a) #

putList :: [Fixed a] -> Put #

(Binary a, Binary b) => Binary (Arg a b)

Since: binary-0.8.4.0

Instance details

Defined in Data.Binary.Class

Methods

put :: Arg a b -> Put #

get :: Get (Arg a b) #

putList :: [Arg a b] -> Put #

Typeable a => Binary (TypeRep a) 
Instance details

Defined in Data.Binary.Class

Methods

put :: TypeRep a -> Put #

get :: Get (TypeRep a) #

putList :: [TypeRep a] -> Put #

(Binary i, Ix i, Binary e) => Binary (Array i e) 
Instance details

Defined in Data.Binary.Class

Methods

put :: Array i e -> Put #

get :: Get (Array i e) #

putList :: [Array i e] -> Put #

(Binary k, Binary e) => Binary (Map k e) 
Instance details

Defined in Data.Binary.Class

Methods

put :: Map k e -> Put #

get :: Get (Map k e) #

putList :: [Map k e] -> Put #

(Binary a, Binary b) => Binary (Either a b) 
Instance details

Defined in Data.Strict.Either

Methods

put :: Either a b -> Put #

get :: Get (Either a b) #

putList :: [Either a b] -> Put #

(Binary a, Binary b) => Binary (These a b) 
Instance details

Defined in Data.Strict.These

Methods

put :: These a b -> Put #

get :: Get (These a b) #

putList :: [These a b] -> Put #

(Binary a, Binary b) => Binary (Pair a b) 
Instance details

Defined in Data.Strict.Tuple

Methods

put :: Pair a b -> Put #

get :: Get (Pair a b) #

putList :: [Pair a b] -> Put #

Binary f => Binary (Ext2 f e) Source # 
Instance details

Defined in ZkFold.Base.Algebra.Basic.Field

Methods

put :: Ext2 f e -> Put #

get :: Get (Ext2 f e) #

putList :: [Ext2 f e] -> Put #

Binary f => Binary (Ext3 f e) Source # 
Instance details

Defined in ZkFold.Base.Algebra.Basic.Field

Methods

put :: Ext3 f e -> Put #

get :: Get (Ext3 f e) #

putList :: [Ext3 f e] -> Put #

Binary (Point BLS12_381_G1) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.BLS12_381

Binary (Point BLS12_381_G2) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.BLS12_381

Binary (Point BN254_G1) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.BN254

Binary (Point BN254_G2) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.BN254

Binary (Point Pallas) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Pasta

Binary (Point Vesta) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.Pasta

Methods

put :: Point Vesta -> Put #

get :: Get (Point Vesta) #

putList :: [Point Vesta] -> Put #

Binary (PointCompressed BLS12_381_G1) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.BLS12_381

Binary (PointCompressed BLS12_381_G2) Source # 
Instance details

Defined in ZkFold.Base.Algebra.EllipticCurve.BLS12_381

(Binary a, KnownNat n) => Binary (SVector n a) Source # 
Instance details

Defined in ZkFold.Base.Data.Sparse.Vector

Methods

put :: SVector n a -> Put #

get :: Get (SVector n a) #

putList :: [SVector n a] -> Put #

(KnownNat n, Binary a) => Binary (Vector n a) Source # 
Instance details

Defined in ZkFold.Base.Data.Vector

Methods

put :: Vector n a -> Put #

get :: Get (Vector n a) #

putList :: [Vector n a] -> Put #

(Binary c, Binary m) => Binary (CommitOpenProverMessage m c) Source # 
Instance details

Defined in ZkFold.Base.Protocol.Protostar.CommitOpen

(Binary a, Binary b) => Binary (These a b)

Since: these-0.7.1

Instance details

Defined in Data.These

Methods

put :: These a b -> Put #

get :: Get (These a b) #

putList :: [These a b] -> Put #

(Binary a, Binary b) => Binary (a, b) 
Instance details

Defined in Data.Binary.Class

Methods

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

get :: Get (a, b) #

putList :: [(a, b)] -> Put #

Binary (f a) => Binary (Alt f a)

Since: binary-0.8.4.0

Instance details

Defined in Data.Binary.Class

Methods

put :: Alt f a -> Put #

get :: Get (Alt f a) #

putList :: [Alt f a] -> Put #

(Binary a, Binary b, Binary c) => Binary (a, b, c) 
Instance details

Defined in Data.Binary.Class

Methods

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

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

putList :: [(a, b, c)] -> Put #

(Binary a, Binary b, Binary c, Binary d) => Binary (a, b, c, d) 
Instance details

Defined in Data.Binary.Class

Methods

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

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

putList :: [(a, b, c, d)] -> Put #

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

Defined in Data.Binary.Class

Methods

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

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

putList :: [(a, b, c, d, e)] -> Put #

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

Defined in Data.Binary.Class

Methods

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

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

putList :: [(a, b, c, d, e, f)] -> Put #

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

Defined in Data.Binary.Class

Methods

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

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

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

(Binary a, Binary b, Binary c, Binary d, Binary e, Binary f, Binary g, Binary h) => Binary (a, b, c, d, e, f, g, h) 
Instance details

Defined in Data.Binary.Class

Methods

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

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

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

(Binary a, Binary b, Binary c, Binary d, Binary e, Binary f, Binary g, Binary h, Binary i) => Binary (a, b, c, d, e, f, g, h, i) 
Instance details

Defined in Data.Binary.Class

Methods

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

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

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

(Binary a, Binary b, Binary c, Binary d, Binary e, Binary f, Binary g, Binary h, Binary i, Binary j) => Binary (a, b, c, d, e, f, g, h, i, j) 
Instance details

Defined in Data.Binary.Class

Methods

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

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

putList :: [(a, b, c, d, e, f, g, h, i, j)] -> Put #

putWord8 :: Word8 -> Put #

Efficiently write a byte into the output buffer

getWord8 :: Get Word8 #

Read a Word8 from the monad state

skip :: Int -> Get () #

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

newtype LittleEndian Source #

Constructors

LittleEndian 

Instances

Instances details
Arbitrary LittleEndian Source # 
Instance details

Defined in ZkFold.Base.Data.ByteString

Enum LittleEndian Source # 
Instance details

Defined in ZkFold.Base.Data.ByteString

Num LittleEndian Source # 
Instance details

Defined in ZkFold.Base.Data.ByteString

Read LittleEndian Source # 
Instance details

Defined in ZkFold.Base.Data.ByteString

Integral LittleEndian Source # 
Instance details

Defined in ZkFold.Base.Data.ByteString

Real LittleEndian Source # 
Instance details

Defined in ZkFold.Base.Data.ByteString

Show LittleEndian Source # 
Instance details

Defined in ZkFold.Base.Data.ByteString

Binary LittleEndian Source # 
Instance details

Defined in ZkFold.Base.Data.ByteString

Eq LittleEndian Source # 
Instance details

Defined in ZkFold.Base.Data.ByteString

Ord LittleEndian Source # 
Instance details

Defined in ZkFold.Base.Data.ByteString

newtype BigEndian Source #

Constructors

BigEndian 

Fields

Instances

Instances details
Arbitrary BigEndian Source # 
Instance details

Defined in ZkFold.Base.Data.ByteString

Enum BigEndian Source # 
Instance details

Defined in ZkFold.Base.Data.ByteString

Num BigEndian Source # 
Instance details

Defined in ZkFold.Base.Data.ByteString

Read BigEndian Source # 
Instance details

Defined in ZkFold.Base.Data.ByteString

Integral BigEndian Source # 
Instance details

Defined in ZkFold.Base.Data.ByteString

Real BigEndian Source # 
Instance details

Defined in ZkFold.Base.Data.ByteString

Show BigEndian Source # 
Instance details

Defined in ZkFold.Base.Data.ByteString

Binary BigEndian Source # 
Instance details

Defined in ZkFold.Base.Data.ByteString

Eq BigEndian Source # 
Instance details

Defined in ZkFold.Base.Data.ByteString

Ord BigEndian Source # 
Instance details

Defined in ZkFold.Base.Data.ByteString

Orphan instances