jon.recoil.org

Module Field.Map

include Flambda2_algorithms.Container_types_intf.Map with type key = Flambda2_reaper.Field.t with module Set = Flambda2_reaper.Field.Set
type !+'a t
val is_empty : 'a Flambda2_reaper.Field.Map.t -> bool
val merge : (Flambda2_reaper.Field.Map.key -> 'a option -> 'b option -> 'c option) -> 'a Flambda2_reaper.Field.Map.t -> 'b Flambda2_reaper.Field.Map.t -> 'c Flambda2_reaper.Field.Map.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.

val compare : ('a -> 'a -> int) -> 'a Flambda2_reaper.Field.Map.t -> 'a Flambda2_reaper.Field.Map.t -> int
val equal : ('a -> 'a -> bool) -> 'a Flambda2_reaper.Field.Map.t -> 'a Flambda2_reaper.Field.Map.t -> bool
val iter : (Flambda2_reaper.Field.Map.key -> 'a -> unit) -> 'a Flambda2_reaper.Field.Map.t -> unit
val fold : (Flambda2_reaper.Field.Map.key -> 'a -> 'b -> 'b) -> 'a Flambda2_reaper.Field.Map.t -> 'b -> 'b
val for_all : (Flambda2_reaper.Field.Map.key -> 'a -> bool) -> 'a Flambda2_reaper.Field.Map.t -> bool
val exists : (Flambda2_reaper.Field.Map.key -> 'a -> bool) -> 'a Flambda2_reaper.Field.Map.t -> bool
val filter_map_sharing : (Flambda2_reaper.Field.Map.key -> 'a -> 'a option) -> 'a Flambda2_reaper.Field.Map.t -> 'a Flambda2_reaper.Field.Map.t
val cardinal : 'a Flambda2_reaper.Field.Map.t -> int
val min_binding_opt : 'a Flambda2_reaper.Field.Map.t -> (Flambda2_reaper.Field.Map.key * 'a) option
val max_binding_opt : 'a Flambda2_reaper.Field.Map.t -> (Flambda2_reaper.Field.Map.key * 'a) option
val choose_opt : 'a Flambda2_reaper.Field.Map.t -> (Flambda2_reaper.Field.Map.key * 'a) option
val print_debug : (Stdlib.Format.formatter -> 'a -> unit) -> Stdlib.Format.formatter -> 'a Flambda2_reaper.Field.Map.t -> unit
val disjoint_union : ?eq:('a -> 'a -> bool) -> ?print:(Stdlib.Format.formatter -> 'a -> unit) -> 'a Flambda2_reaper.Field.Map.t -> 'a Flambda2_reaper.Field.Map.t -> 'a Flambda2_reaper.Field.Map.t
val data : 'a Flambda2_reaper.Field.Map.t -> 'a list

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.

val inter_domain_is_non_empty : 'a Flambda2_reaper.Field.Map.t -> 'a Flambda2_reaper.Field.Map.t -> bool
val get_singleton : 'a Flambda2_reaper.Field.Map.t -> (Flambda2_reaper.Field.Map.key * 'a) option
val map_sharing : ('a -> 'a) -> 'a Flambda2_reaper.Field.Map.t -> 'a Flambda2_reaper.Field.Map.t
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.