Module Mavryk_raw_protocol_alpha.Script_set

Functions to ease the manipulation of sets of values in Michelson.

A set in Michelson is a collection of type-homegeneous values along with the functions that operate on the structure (through a first-class module). In particular, the size function runs in constant time.

val make : (module Script_typed_ir.Boxed_set with type elt = 'elt) -> 'elt Script_typed_ir.set
val get : 'elt Script_typed_ir.set -> (module Script_typed_ir.Boxed_set with type elt = 'elt)

empty cmp_ty creates a set module where elements have size Gas_comparable_input_size.size_of_comparable_value cmp_ty and are compared with Script_comparable.compare_comparable cmp_ty (used for sorting values, which ensures a reasonable complexity of the set functions). The function returns an empty set packaged as a first-class set module.

val fold : ('elt -> 'acc -> 'acc) -> 'elt Script_typed_ir.set -> 'acc -> 'acc
val update : 'a -> bool -> 'a Script_typed_ir.set -> 'a Script_typed_ir.set

update v true set adds v to set, and update v false set removes v from set.

val mem : 'elt -> 'elt Script_typed_ir.set -> bool

size set runs in constant time.