Mavryk_raw_protocol_alpha.Script_setFunctions 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.setval get :
'elt Script_typed_ir.set ->
(module Script_typed_ir.Boxed_set
with type elt = 'elt)val empty : 'a Script_typed_ir.comparable_ty -> 'a Script_typed_ir.setempty 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 -> 'accval update : 'a -> bool -> 'a Script_typed_ir.set -> 'a Script_typed_ir.setupdate v true set adds v to set, and update v false set removes v from set.
val mem : 'elt -> 'elt Script_typed_ir.set -> boolval size : 'elt Script_typed_ir.set -> Script_int.n Script_int.numsize set runs in constant time.