package tezos-protocol-alpha

  1. Overview
  2. Docs
Legend:
Library
Module
Module type
Parameter
Class
Class type

An in-memory data-structure for a key-value map where all operations account for gas costs.

type 'a t
type key

The type of keys in the map.

val empty : 'a t

empty an empty map.

val size : 'a t -> int

size m returns the number of elements of the map m in constant time.

val find : Alpha_context.context -> key -> 'a t -> ('a option * Alpha_context.context, Tezos_protocol_environment_alpha__Environment.Error_monad.error Tezos_protocol_environment_alpha__Environment.Error_monad.trace) result

find ctxt k m looks up the value with key k in the given map m and also consumes the gas associated with the lookup. The complexity is logarithmic in the size of the map.

val update : Alpha_context.context -> key -> (Alpha_context.context -> 'a option -> ('a option * Alpha_context.context, Tezos_protocol_environment_alpha__Environment.Error_monad.error Tezos_protocol_environment_alpha__Environment.Error_monad.trace) result) -> 'a t -> ('a t * Alpha_context.context, Tezos_protocol_environment_alpha__Environment.Error_monad.error Tezos_protocol_environment_alpha__Environment.Error_monad.trace) result

update ctxt k f map updates or adds the value of the key k using f. The function accounts for the gas cost for finding the element. The updating function f should also account for its own gas cost. The complexity is logarithmic in the size of the map.

val to_list : Alpha_context.context -> 'a t -> ((key * 'a) list * Alpha_context.context, Tezos_protocol_environment_alpha__Environment.Error_monad.error Tezos_protocol_environment_alpha__Environment.Error_monad.trace) result

to_list m transforms a map m into a list. It also accounts for the gas cost for traversing the elements. The complexity is linear in the size of the map.

val of_list : Alpha_context.context -> merge_overlap: (Alpha_context.context -> 'a -> 'a -> ('a * Alpha_context.context, Tezos_protocol_environment_alpha__Environment.Error_monad.error Tezos_protocol_environment_alpha__Environment.Error_monad.trace) result) -> (key * 'a) list -> ('a t * Alpha_context.context, Tezos_protocol_environment_alpha__Environment.Error_monad.error Tezos_protocol_environment_alpha__Environment.Error_monad.trace) result

of_list ctxt ~merge_overlaps m creates a map from a list of key-value pairs. In case there are overlapping keys, their values are combined using the merge_overlap function. The function accounts for gas for traversing the elements. merge_overlap should account for its own gas cost. The complexity is n * log n in the size of the list.

val merge : Alpha_context.context -> merge_overlap: (Alpha_context.context -> 'a -> 'a -> ('a * Alpha_context.context, Tezos_protocol_environment_alpha__Environment.Error_monad.error Tezos_protocol_environment_alpha__Environment.Error_monad.trace) result) -> 'a t -> 'a t -> ('a t * Alpha_context.context, Tezos_protocol_environment_alpha__Environment.Error_monad.error Tezos_protocol_environment_alpha__Environment.Error_monad.trace) result

merge ctxt ~merge_overlap m1 m2 merges the maps m1 and m2. In case there are overlapping keys, their values are combined using the merge_overlap function. Gas costs for traversing all elements from both maps are accounted for. merge_overlap should account for its own gas cost. The complexity is n * log n, where n is size m1 + size m2.

val map : Alpha_context.context -> (Alpha_context.context -> key -> 'a -> ('b * Alpha_context.context, Tezos_protocol_environment_alpha__Environment.Error_monad.error Tezos_protocol_environment_alpha__Environment.Error_monad.trace) result) -> 'a t -> ('b t * Alpha_context.context, Tezos_protocol_environment_alpha__Environment.Error_monad.error Tezos_protocol_environment_alpha__Environment.Error_monad.trace) result

map ctxt f m maps over all key-value pairs in the map m using the function f. It accounts for gas costs associated with traversing the elements. The mapping function f should also account for its own gas cost. The complexity is linear in the size of the map m.