jon.recoil.org

Module Simple.Map

include Flambda2_algorithms.Container_types_intf.Map with type key = Flambda2_identifiers.Int_ids.Simple.t with module Set = Flambda2_identifiers.Int_ids.Simple.Set
type !+'a t

union_sharing f m1 m2 is a version of union f m1 m2 that maximizes sharing of the result with m1.

union_shared f m1 m2 is a version of union_sharing f m1 m2 that also exploits sharing of m1 and m2 to avoid calling f when possible, assuming that f x x = Some x for all xs.

diff f m1 m2 computes a map whose keys are a subset of the keys of m1. When a binding is defined in both m1 and m2, the function f is used to combine them. Bindings that are only present in m1 are preserved. This is a special case of merge: diff f m1 m2 is equivalent to merge f' m1 m2, where

  • f' _key None _ = None
  • f' _key (Some v) None = Some v
  • f' key (Some v1) (Some v2) = f key v1 v2

diff_sharing f m1 m2 is a version of diff f m1 m2 that maximizes sharing of the result with m1.

diff_shared f m1 m2 is a version of diff_sharing f m1 m2 that further exploits sharing of m1 and m2 to avoid calling f when possible, assuming that f x x always returns None.

type 'a iterator

An 'a iterator iterates over the values in a 'a t map in increasing order.

iterator t returns an iterator for all the bindings in t, initially positioned on min_binding t.

current iterator returns the key-value pair at the current position, or None if the iterator is exhausted.

advance iterator position the iterator on the next key.

seek iterator key positions the iterator on the next key higher or equal to the provided key.

Note: does nothing if key is less than or equal to the current key.