plutus-core-1.54.0.0: Language library for Plutus Core
Safe HaskellSafe-Inferred
LanguageHaskell2010

PlutusCore.Flat.Instances.Array

Description

Flat instances for the array package

Orphan instances

(Flat i, Flat e, Ix i, IArray UArray e) ⇒ Flat (UArray i e) Source # 
Instance details

Methods

encodeUArray i e → Encoding Source #

decodeGet (UArray i e) Source #

sizeUArray i e → NumBitsNumBits Source #

(Flat i, Flat e, Ix i) ⇒ Flat (Array i e) Source #

Array is encoded as (lowBound,highBound,AsArray (elems array)):

>>> let arr = A.array ((1::Word,4::Word),(2,5)) [((1,4),11::Word),((1,5),22),((2,4),33),((2,5),44)] in tst (bounds arr,AsArray(elems arr)) == tst arr
True

As it's easy to see:

>>> tst $ A.array ((1::Word,4::Word),(2,5)) [((1,4),11::Word),((1,5),22),((2,4),33),((2,5),44)]
(True,80,[1,4,2,5,4,11,22,33,44,0])
>>> tst $ A.array ((1,4),(2,5)) [((1,4),"1.4"),((1,5),"1.5"),((2,4),"2.4"),((2,5),"2.5")]
(True,160,[2,8,4,10,4,152,203,166,137,140,186,106,153,75,166,137,148,186,106,0])

Arrays and Unboxed Arrays are encoded in the same way:

>>> let bounds = ((1::Word,4::Word),(2,5));elems=[11::Word,22,33,44] in tst (U.listArray bounds elems :: U.UArray (Word,Word) Word) == tst (A.listArray bounds elems)
True
Instance details

Methods

encodeArray i e → Encoding Source #

decodeGet (Array i e) Source #

sizeArray i e → NumBitsNumBits Source #