Module CCHashtbl
Extension to the standard Hashtbl
- since
- 0.4
type 'a sequence
= ('a -> unit) -> unit
type 'a eq
= 'a -> 'a -> bool
type 'a hash
= 'a -> int
type 'a printer
= Stdlib.Format.formatter -> 'a -> unit
Polymorphic tables
module Poly : sig ... end
include module type of Poly
val get_or : ('a, 'b) Stdlib.Hashtbl.t -> 'a -> default:'b -> 'b
get_or tbl k ~default
returns the value associated tok
if present, and returnsdefault
otherwise (ifk
doesn't belong intbl
).- since
- 0.16
val keys : ('a, 'b) Stdlib.Hashtbl.t -> 'a sequence
Iterate on keys (similar order as
Hashtbl
.iter).
val values : ('a, 'b) Stdlib.Hashtbl.t -> 'b sequence
Iterate on values in the table.
val keys_list : ('a, 'b) Stdlib.Hashtbl.t -> 'a list
keys_list t
is the list of keys int
. If the key is in the Hashtable multiple times, all occurrences will be returned.- since
- 0.8
val values_list : ('a, 'b) Stdlib.Hashtbl.t -> 'b list
values_list t
is the list of values int
.- since
- 0.8
val map_list : ('a -> 'b -> 'c) -> ('a, 'b) Stdlib.Hashtbl.t -> 'c list
Map on a hashtable's items, collect into a list.
val incr : ?by:int -> ('a, int) Stdlib.Hashtbl.t -> 'a -> unit
incr ?by tbl x
increments or initializes the counter associated withx
. Ifget tbl x = None
, then after update,get tbl x = Some 1
; otherwise, ifget tbl x = Some n
, nowget tbl x = Some (n+1)
.- parameter by
if specified, the int value is incremented by
by
rather than 1.
- since
- 0.16
val decr : ?by:int -> ('a, int) Stdlib.Hashtbl.t -> 'a -> unit
Like
incr
but subtract 1 (or the value ofby
). If the value reaches 0, the key is removed from the table. This does nothing if the key is not already present in the table.- since
- 0.16
val to_seq : ('a, 'b) Stdlib.Hashtbl.t -> ('a * 'b) sequence
Iterate on bindings in the table.
val add_list : ('a, 'b list) Stdlib.Hashtbl.t -> 'a -> 'b -> unit
add_list tbl x y
addsy
to the listx
is bound to. Ifx
is not bound, it becomes bound toy
.- since
- 0.16
val add_seq : ('a, 'b) Stdlib.Hashtbl.t -> ('a * 'b) sequence -> unit
Add the corresponding pairs to the table, using
Hashtbl
.add.- since
- 0.16
val of_seq : ('a * 'b) sequence -> ('a, 'b) Stdlib.Hashtbl.t
From the given bindings, added in order.
val add_seq_count : ('a, int) Stdlib.Hashtbl.t -> 'a sequence -> unit
add_seq_count tbl seq
increments the count of each element ofseq
by callingincr
. This is useful for counting how many times each element ofseq
occurs.- since
- 0.16
val of_seq_count : 'a sequence -> ('a, int) Stdlib.Hashtbl.t
Like
add_seq_count
, but allocates a new table and returns it.- since
- 0.16
val of_list : ('a * 'b) list -> ('a, 'b) Stdlib.Hashtbl.t
Build a table from the given list of bindings
k_i -> v_i
, added in order usingadd
. If a key occurs several times, it will be added several times, and the visible binding will be the last one.
val update : ('a, 'b) Stdlib.Hashtbl.t -> f:('a -> 'b option -> 'b option) -> k:'a -> unit
update tbl ~f ~k
updates keyk
by callingf k (Some v)
ifk
was mapped tov
, orf k None
otherwise; if the call returnsNone
thenk
is removed/stays removed, if the call returnsSome v'
then the bindingk -> v'
is inserted usingHashtbl
.replace.- since
- 0.14
Functor
module type S = sig ... end