Module Core_extended.Multi_map

type ('k, 'v) t
include Core.Sexpable.S2 with type (a, b) t := (a, b) t
type ('a, 'b) t
val t_of_sexp : (Base__.Sexplib.Sexp.t ‑> 'a) ‑> (Base__.Sexplib.Sexp.t ‑> 'b) ‑> Base__.Sexplib.Sexp.t ‑> ('a'bt
val sexp_of_t : ('a ‑> Base__.Sexplib.Sexp.t) ‑> ('b ‑> Base__.Sexplib.Sexp.t) ‑> ('a'bt ‑> Base__.Sexplib.Sexp.t
val empty : ('k'vt
val singleton : 'k ‑> 'v ‑> ('k'vt
val is_empty : ('k'vt ‑> bool
val add : key:'k ‑> data:'v ‑> ('k'vt ‑> ('k'vt
val find : ('k'vt ‑> 'k ‑> 'v list

find m key returns all the elements that where added to key in m in the reverse order in which they where added. If no element where added an empty list is returned.

val remove : ('k'vt ‑> 'k ‑> ('k'vt

remove m key Remove all the values associated the key key in m

val set : key:'k ‑> data:'v list ‑> ('k'vt ‑> ('k'vt
val mem : ('k'vt ‑> 'k ‑> bool

mem m key returns true if key has at last one value associated to it in m

val keys : ('k'vt ‑> 'k list

Returns all the non-empty keys in m.

val iter : f:('v ‑> unit) ‑> (_'vt ‑> unit
val iteri : f:(key:'k ‑> data:'v ‑> unit) ‑> ('k'vt ‑> unit
val iter_keys : f:('k ‑> unit) ‑> ('k_t ‑> unit
val map : f:('a ‑> 'b) ‑> ('k'at ‑> ('k'bt
val mapi : f:(key:'k ‑> data:'a ‑> 'b) ‑> ('k'at ‑> ('k'bt
val fold : f:(key:'k ‑> data:'v ‑> 'a ‑> 'a) ‑> ('k'vt ‑> init:'a ‑> 'a
val filter : f:('v ‑> bool) ‑> ('k'vt ‑> ('k'vt
val filteri : f:(key:'k ‑> data:'v ‑> bool) ‑> ('k'vt ‑> ('k'vt
val filter_keys : f:('k ‑> bool) ‑> ('k'vt ‑> ('k'vt
val reduce : f:('v list ‑> 'r) ‑> ('k'vt ‑> ('k'rCore.Map.Poly.t