Module Total_map
A map that includes an entry for every possible value of the key type.
This is intended to be used on 'key types where there is a full enumeration of the type. In the common use case, 'key will be a simple variant type with [@@deriving
compare, enumerate]. For example:
module Arrow_key = struct
module T = struct
type t =
| Up
| Down
| Left
| Right
[@@deriving sexp, bin_io, compare, enumerate]
end
include T
module Total_map = Total_map.Make (T)
endIn such a case, a t is semantically equivalent to a pure function from 'key to 'value. The differences are that it is serializable and that mapping or changing a t will produce a t using the same amount of space as the original.
However, in theory you could also modify the comparison function and enumeration, so long as the enumeration contains at least one representative of each equivalence class determined by the comparison function.
type ('key, 'a, 'cmp, 'enum) t= private ('key, 'a, 'cmp) Core_kernel.Map.t
val to_map : ('key, 'a, 'cmp, _) t -> ('key, 'a, 'cmp) Core_kernel.Map.t
val map : ('key, 'a, 'c, 'e) t -> f:('a -> 'b) -> ('key, 'b, 'c, 'e) tval mapi : ('key, 'a, 'c, 'e) t -> f:(key:'key -> data:'a -> 'b) -> ('key, 'b, 'c, 'e) tval map2 : ('key, 'a, 'cmp, 'enum) t -> ('key, 'b, 'cmp, 'enum) t -> f:('a -> 'b -> 'c) -> ('key, 'c, 'cmp, 'enum) tval iter_keys : ('key, _, _, _) t -> f:('key -> unit) -> unitval iter : (_, 'a, _, _) t -> f:('a -> unit) -> unitval iteri : ('key, 'a, _, _) t -> f:(key:'key -> data:'a -> unit) -> unitval iter2 : ('key, 'a, 'cmp, 'enum) t -> ('key, 'b, 'cmp, 'enum) t -> f:(key:'key -> 'a -> 'b -> unit) -> unitval set : ('key, 'a, 'cmp, 'enum) t -> 'key -> 'a -> ('key, 'a, 'cmp, 'enum) tval to_alist : ?key_order:[ `Increasing | `Decreasing ] -> ('key, 'a, _, _) t -> ('key * 'a) listval find : ('key, 'a, _, _) t -> 'key -> 'aval change : ('key, 'a, 'c, 'e) t -> 'key -> f:('a -> 'a) -> ('key, 'a, 'c, 'e) tval data : (_, 'a, _, _) t -> 'a listval for_all : (_, 'a, _, _) t -> f:('a -> bool) -> bool
module Sequence : functor (A : Core_kernel.Applicative) -> sig ... endSequence a total map of computations in order of their keys resulting in computation of the total map of results.
module type Key = sig ... endmodule type S = sig ... endmodule Make_using_comparator : functor (Key : sig ... end) -> S with module Key = Key with type comparator_witness = Key.comparator_witness