plutarch-1.3.0
Safe HaskellSafe-Inferred
LanguageGHC2021

Plutarch.Api.V1.AssocMap

Synopsis

Documentation

newtype PMap (keysort :: KeyGuarantees) (k :: PType) (v :: PType) (s :: S) Source #

Constructors

PMap (Term s (PBuiltinList (PBuiltinPair (PAsData k) (PAsData v)))) 

Instances

Instances details
(POrd k, PIsData k, PIsData v, PTryFrom PData (PAsData k), PTryFrom PData (PAsData v)) => PTryFrom PData (PAsData (PMap 'Sorted k v)) Source # 
Instance details

Defined in Plutarch.Api.V1.AssocMap

Associated Types

type PTryFromExcess PData (PAsData (PMap 'Sorted k v)) :: PType Source #

Methods

ptryFrom' :: forall (s :: S) (r :: PType). Term s PData -> ((Term s (PAsData (PMap 'Sorted k v)), Reduce (PTryFromExcess PData (PAsData (PMap 'Sorted k v)) s)) -> Term s r) -> Term s r Source #

(PTryFrom PData (PAsData k), PTryFrom PData (PAsData v)) => PTryFrom PData (PAsData (PMap 'Unsorted k v)) Source # 
Instance details

Defined in Plutarch.Api.V1.AssocMap

Associated Types

type PTryFromExcess PData (PAsData (PMap 'Unsorted k v)) :: PType Source #

Methods

ptryFrom' :: forall (s :: S) (r :: PType). Term s PData -> ((Term s (PAsData (PMap 'Unsorted k v)), Reduce (PTryFromExcess PData (PAsData (PMap 'Unsorted k v)) s)) -> Term s r) -> Term s r Source #

(POrd k, PIsData k, PIsData v, Semigroup (Term s v)) => Monoid (Term s (PMap 'Sorted k v)) Source # 
Instance details

Defined in Plutarch.Api.V1.AssocMap

Methods

mempty :: Term s (PMap 'Sorted k v) Source #

mappend :: Term s (PMap 'Sorted k v) -> Term s (PMap 'Sorted k v) -> Term s (PMap 'Sorted k v) Source #

mconcat :: [Term s (PMap 'Sorted k v)] -> Term s (PMap 'Sorted k v) Source #

(POrd k, PIsData k, PIsData v, Semigroup (Term s v)) => Semigroup (Term s (PMap 'Sorted k v)) Source # 
Instance details

Defined in Plutarch.Api.V1.AssocMap

Methods

(<>) :: Term s (PMap 'Sorted k v) -> Term s (PMap 'Sorted k v) -> Term s (PMap 'Sorted k v) Source #

sconcat :: NonEmpty (Term s (PMap 'Sorted k v)) -> Term s (PMap 'Sorted k v) Source #

stimes :: Integral b => b -> Term s (PMap 'Sorted k v) -> Term s (PMap 'Sorted k v) Source #

(PIsData k, PIsData v, POrd k) => IsList (Term s (PMap 'Sorted k v)) Source # 
Instance details

Defined in Plutarch.Api.V1.AssocMap

Associated Types

type Item (Term s (PMap 'Sorted k v)) Source #

Methods

fromList :: [Item (Term s (PMap 'Sorted k v))] -> Term s (PMap 'Sorted k v) Source #

fromListN :: Int -> [Item (Term s (PMap 'Sorted k v))] -> Term s (PMap 'Sorted k v) Source #

toList :: Term s (PMap 'Sorted k v) -> [Item (Term s (PMap 'Sorted k v))] Source #

(PIsData k, PIsData v, POrd k) => IsList (Term s (PMap 'Unsorted k v)) Source # 
Instance details

Defined in Plutarch.Api.V1.AssocMap

Associated Types

type Item (Term s (PMap 'Unsorted k v)) Source #

Methods

fromList :: [Item (Term s (PMap 'Unsorted k v))] -> Term s (PMap 'Unsorted k v) Source #

fromListN :: Int -> [Item (Term s (PMap 'Unsorted k v))] -> Term s (PMap 'Unsorted k v) Source #

toList :: Term s (PMap 'Unsorted k v) -> [Item (Term s (PMap 'Unsorted k v))] Source #

(POrd k, PIsData k, PIsData v, Group (Term s v)) => Group (Term s (PMap 'Sorted k v)) Source # 
Instance details

Defined in Plutarch.Api.V1.AssocMap

Methods

inv :: Term s (PMap 'Sorted k v) -> Term s (PMap 'Sorted k v) Source #

(POrd k, PIsData k, PIsData v, Semigroup (Term s v)) => Monoid (Term s (PMap 'Sorted k v)) Source # 
Instance details

Defined in Plutarch.Api.V1.AssocMap

Methods

mempty :: Term s (PMap 'Sorted k v) Source #

(POrd k, PIsData k, PIsData v, Semigroup (Term s v)) => Semigroup (Term s (PMap 'Sorted k v)) Source # 
Instance details

Defined in Plutarch.Api.V1.AssocMap

Methods

(<>) :: Term s (PMap 'Sorted k v) -> Term s (PMap 'Sorted k v) -> Term s (PMap 'Sorted k v) Source #

PEq (PMap 'Sorted k v) Source # 
Instance details

Defined in Plutarch.Api.V1.AssocMap

Methods

(#==) :: forall (s :: S). Term s (PMap 'Sorted k v) -> Term s (PMap 'Sorted k v) -> Term s PBool Source #

PIsData (PMap keysort k v) Source # 
Instance details

Defined in Plutarch.Api.V1.AssocMap

Methods

pfromDataImpl :: forall (s :: S). Term s (PAsData (PMap keysort k v)) -> Term s (PMap keysort k v) Source #

pdataImpl :: forall (s :: S). Term s (PMap keysort k v) -> Term s PData Source #

DerivePlutusType (PMap keysort k v) Source # 
Instance details

Defined in Plutarch.Api.V1.AssocMap

Associated Types

type DPTStrat (PMap keysort k v) Source #

PlutusType (PMap keysort k v) Source # 
Instance details

Defined in Plutarch.Api.V1.AssocMap

Associated Types

type PInner (PMap keysort k v) :: PType Source #

type PCovariant' (PMap keysort k v) Source #

type PContravariant' (PMap keysort k v) Source #

type PVariant' (PMap keysort k v) Source #

Methods

pcon' :: forall (s :: S). PMap keysort k v s -> Term s (PInner (PMap keysort k v)) Source #

pmatch' :: forall (s :: S) (b :: PType). Term s (PInner (PMap keysort k v)) -> (PMap keysort k v s -> Term s b) -> Term s b Source #

(PLiftData k, PLiftData v, Ord (PLifted k)) => PUnsafeLiftDecl (PMap 'Unsorted k v) Source # 
Instance details

Defined in Plutarch.Api.V1.AssocMap

Associated Types

type PLifted (PMap 'Unsorted k v) = (r :: Type) Source #

(PIsData k, PIsData v, PShow k, PShow v) => PShow (PMap keysort k v) Source # 
Instance details

Defined in Plutarch.Api.V1.AssocMap

Methods

pshow' :: forall (s :: S). Bool -> Term s (PMap keysort k v) -> Term s PString Source #

Generic (PMap keysort k v s) Source # 
Instance details

Defined in Plutarch.Api.V1.AssocMap

Associated Types

type Rep (PMap keysort k v s) :: Type -> Type Source #

Methods

from :: PMap keysort k v s -> Rep (PMap keysort k v s) x Source #

to :: Rep (PMap keysort k v s) x -> PMap keysort k v s Source #

type PTryFromExcess PData (PAsData (PMap 'Sorted k v)) Source # 
Instance details

Defined in Plutarch.Api.V1.AssocMap

type PTryFromExcess PData (PAsData (PMap 'Unsorted k v)) Source # 
Instance details

Defined in Plutarch.Api.V1.AssocMap

type Item (Term s (PMap 'Sorted k v)) Source # 
Instance details

Defined in Plutarch.Api.V1.AssocMap

type Item (Term s (PMap 'Sorted k v)) = (Term s k, Term s v)
type Item (Term s (PMap 'Unsorted k v)) Source # 
Instance details

Defined in Plutarch.Api.V1.AssocMap

type Item (Term s (PMap 'Unsorted k v)) = (Term s k, Term s v)
type DPTStrat (PMap keysort k v) Source # 
Instance details

Defined in Plutarch.Api.V1.AssocMap

type DPTStrat (PMap keysort k v) = PlutusTypeNewtype
type PContravariant' (PMap keysort k v) Source # 
Instance details

Defined in Plutarch.Api.V1.AssocMap

type PContravariant' (PMap keysort k v)
type PCovariant' (PMap keysort k v) Source # 
Instance details

Defined in Plutarch.Api.V1.AssocMap

type PCovariant' (PMap keysort k v)
type PInner (PMap keysort k v) Source # 
Instance details

Defined in Plutarch.Api.V1.AssocMap

type PInner (PMap keysort k v) = DerivedPInner (DPTStrat (PMap keysort k v)) (PMap keysort k v)
type PVariant' (PMap keysort k v) Source # 
Instance details

Defined in Plutarch.Api.V1.AssocMap

type PVariant' (PMap keysort k v)
type PLifted (PMap 'Unsorted k v) Source # 
Instance details

Defined in Plutarch.Api.V1.AssocMap

type PLifted (PMap 'Unsorted k v) = Map (PLifted k) (PLifted v)
type Rep (PMap keysort k v s) Source # 
Instance details

Defined in Plutarch.Api.V1.AssocMap

type Rep (PMap keysort k v s) = D1 ('MetaData "PMap" "Plutarch.Api.V1.AssocMap" "plutarch-1.3.0-287WdR4V4qr3NTh5i3Je4I" 'True) (C1 ('MetaCons "PMap" 'PrefixI 'False) (S1 ('MetaSel ('Nothing :: Maybe Symbol) 'NoSourceUnpackedness 'NoSourceStrictness 'DecidedLazy) (Rec0 (Term s (PBuiltinList (PBuiltinPair (PAsData k) (PAsData v)))))))

data KeyGuarantees Source #

Constructors

Sorted 
Unsorted 

Creation

pempty :: Term s (PMap 'Sorted k v) Source #

Construct an empty PMap.

psingleton :: (PIsData k, PIsData v) => Term s (k :--> (v :--> PMap 'Sorted k v)) Source #

Construct a singleton PMap with the given key and value.

psingletonData :: Term s (PAsData k :--> (PAsData v :--> PMap 'Sorted k v)) Source #

Construct a singleton PMap with the given data-encoded key and value.

pinsert :: (POrd k, PIsData k, PIsData v) => Term s (k :--> (v :--> (PMap 'Sorted k v :--> PMap 'Sorted k v))) Source #

Insert a new key/value pair into the map, overiding the previous if any.

pinsertData :: (POrd k, PIsData k) => Term s (PAsData k :--> (PAsData v :--> (PMap 'Sorted k v :--> PMap 'Sorted k v))) Source #

Insert a new data-encoded key/value pair into the map, overiding the previous if any.

pdelete :: (POrd k, PIsData k) => Term s (k :--> (PMap 'Sorted k v :--> PMap 'Sorted k v)) Source #

Delete a key from the map.

pfromAscList :: (POrd k, PIsData k, PIsData v) => Term s (PBuiltinListOfPairs k v :--> PMap 'Sorted k v) Source #

Construct a PMap from a list of key-value pairs, sorted by ascending key data.

passertSorted :: forall k v any s. (POrd k, PIsData k, PIsData v) => Term s (PMap any k v :--> PMap 'Sorted k v) Source #

Assert the map is properly sorted.

pforgetSorted :: Term s (PMap 'Sorted k v) -> Term s (PMap g k v) Source #

Forget the knowledge that keys were sorted.

Lookups

plookup :: (PIsData k, PIsData v) => Term s (k :--> (PMap any k v :--> PMaybe v)) Source #

Look up the given key in a PMap.

plookupData :: Term s (PAsData k :--> (PMap any k v :--> PMaybe (PAsData v))) Source #

Look up the given key data in a PMap.

pfindWithDefault :: (PIsData k, PIsData v) => Term s (v :--> (k :--> (PMap any k v :--> v))) Source #

Look up the given key in a PMap, returning the default value if the key is absent.

pfoldAt :: PIsData k => Term s (k :--> (r :--> ((PAsData v :--> r) :--> (PMap any k v :--> r)))) Source #

Look up the given key in a PMap; return the default if the key is absent or apply the argument function to the value data if present.

pnull :: Term s (PMap any k v :--> PBool) Source #

Tests whether the map is empty.

Folds

pall :: PIsData v => Term s ((v :--> PBool) :--> (PMap any k v :--> PBool)) Source #

Tests if all values in the map satisfy the given predicate.

pany :: PIsData v => Term s ((v :--> PBool) :--> (PMap any k v :--> PBool)) Source #

Tests if anu value in the map satisfies the given predicate.

Filters and traversals

pfilter :: PIsData v => Term s ((v :--> PBool) :--> (PMap g k v :--> PMap g k v)) Source #

Filters the map so it contains only the values that satisfy the given predicate.

pmap :: (PIsData a, PIsData b) => Term s ((a :--> b) :--> (PMap g k a :--> PMap g k b)) Source #

Applies a function to every value in the map, much like map.

pmapData :: Term s ((PAsData a :--> PAsData b) :--> (PMap g k a :--> PMap g k b)) Source #

pmapMaybe :: (PIsData a, PIsData b) => Term s ((a :--> PMaybe b) :--> (PMap g k a :--> PMap g k b)) Source #

Maps and filters the map, much like mapMaybe.

Combining

pdifference :: PIsData k => Term s (PMap g k a :--> (PMap any k b :--> PMap g k a)) Source #

Difference of two maps. Return elements of the first map not existing in the second map.

punionWith :: (POrd k, PIsData k, PIsData v) => Term s ((v :--> (v :--> v)) :--> (PMap 'Sorted k v :--> (PMap 'Sorted k v :--> PMap 'Sorted k v))) Source #

Combine two PMaps applying the given function to any two values that share the same key.

punionWithData :: (POrd k, PIsData k) => Term s ((PAsData v :--> (PAsData v :--> PAsData v)) :--> (PMap 'Sorted k v :--> (PMap 'Sorted k v :--> PMap 'Sorted k v))) Source #

Combine two PMaps applying the given function to any two data-encoded values that share the same key.

Partial order operations

pcheckBinRel :: forall k v s. (POrd k, PIsData k, PIsData v) => Term s ((v :--> (v :--> PBool)) :--> (v :--> (PMap 'Sorted k v :--> (PMap 'Sorted k v :--> PBool)))) Source #

Given a comparison function and a "zero" value, check whether a binary relation holds over 2 sorted PMaps.

This is primarily intended to be used with PValue.

Orphan instances

(PConstantData k, PConstantData v, Ord k) => PConstantDecl (Map k v) Source # 
Instance details

Associated Types

type PConstantRepr (Map k v) Source #

type PConstanted (Map k v) :: PType Source #