File: Multimap.mli

package info (click to toggle)
ocamlformat 0.27.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 12,068 kB
  • sloc: ml: 61,288; pascal: 4,739; lisp: 229; sh: 217; makefile: 121
file content (47 lines) | stat: -rw-r--r-- 1,774 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
(**************************************************************************)
(*                                                                        *)
(*                              OCamlFormat                               *)
(*                                                                        *)
(*            Copyright (c) Facebook, Inc. and its affiliates.            *)
(*                                                                        *)
(*      This source code is licensed under the MIT license found in       *)
(*      the LICENSE file in the root directory of this source tree.       *)
(*                                                                        *)
(**************************************************************************)

(** Maps with a list of values attached to a key. This is an extension of the
    [Map] module, so these are compatible with [Map.mem], etc. *)

type ('key, 'value, 'cmp) t = ('key, 'value list, 'cmp) Map.t

module M (K : sig
  type t

  type comparator_witness
end) : sig
  type nonrec 'value t = (K.t, 'value, K.comparator_witness) t
end

val update_multi :
     ('key, 'value, 'cmp) t
  -> src:'key
  -> dst:'key
  -> f:('value list -> 'value list -> 'value list)
  -> ('key, 'value, 'cmp) t

val change_multi :
  ('key, 'value, 'cmp) t -> 'key -> 'value list -> ('key, 'value, 'cmp) t

val partition_multi :
     ('key, 'value, 'cmp) t
  -> src:'key
  -> dst:'key
  -> f:('value -> bool)
  -> ('key, 'value, 'cmp) t
(** Split the values of key [src] with [f], the values satisfying [f] are
    moved to key [dst] while the others remain associated to key [src]. *)

val filter :
  ('key, 'value, 'cmp) t -> f:('value -> bool) -> ('key, 'value, 'cmp) t

val to_list : (_, 'value, _) t -> 'value list