Module Core_kernel__.Bounded_int_table

type ('key, 'data) t
val sexp_of_t : ('key -> Ppx_sexp_conv_lib.Sexp.t) -> ('data -> Ppx_sexp_conv_lib.Sexp.t) -> ('key'data) t -> Ppx_sexp_conv_lib.Sexp.t
type ('a, 'b) table = ('a'b) t
include Core_kernel__.Import.Invariant.S2 with type ('a, 'b) t := ('a'b) t
type ('a, 'b) t
val invariant : 'a Base__.Invariant_intf.inv -> 'b Base__.Invariant_intf.inv -> ('a'b) t Base__.Invariant_intf.inv

Equality only requires the keys and values to be the same, not the bin or sexp formatting or the integers the keys correspond to (see key_to_int).

include Core_kernel__.Import.Equal.S2 with type ('a, 'b) t := ('a'b) t
type ('a, 'b) t
val equal : 'a Core_kernel__.Import.Equal.equal -> 'b Core_kernel__.Import.Equal.equal -> ('a'b) t Core_kernel__.Import.Equal.equal
val create : ?⁠sexp_of_key:('key -> Core_kernel.Sexp.t) -> num_keys:Core_kernel__.Import.int -> key_to_int:('key -> Core_kernel__.Import.int) -> Core_kernel__.Import.unit -> ('key'data) t

create ~num_keys ~key_to_int returns a table where the keys can map to 0 ... num_keys - 1, according to key_to_int. It is an error if num_keys < 0.

sexp_of_key, if supplied, will be used to display keys in error messages.

val num_keys : (__) t -> Core_kernel__.Import.int
val is_empty : (__) t -> Core_kernel__.Import.bool

Standard hashtbl functions

val keys : ('key_) t -> 'key Core_kernel__.Import.list
val data : (_'data) t -> 'data Core_kernel__.Import.list
val find : ('key'data) t -> 'key -> 'data Core_kernel__.Import.option
val find_exn : ('key'data) t -> 'key -> 'data
val find_or_add : ('key'data) t -> 'key -> default:(Core_kernel__.Import.unit -> 'data) -> 'data
val fold : ('key'data) t -> init:'accum -> f:(key:'key -> data:'data -> 'accum -> 'accum) -> 'accum
val iter_keys : ('key_) t -> f:('key -> Core_kernel__.Import.unit) -> Core_kernel__.Import.unit
val iter : (_'data) t -> f:('data -> Core_kernel__.Import.unit) -> Core_kernel__.Import.unit
val iteri : ('key'data) t -> f:(key:'key -> data:'data -> Core_kernel__.Import.unit) -> Core_kernel__.Import.unit
val iter_vals : (_'data) t -> f:('data -> Core_kernel__.Import.unit) -> Core_kernel__.Import.unit
val filter_mapi : ('key'data1) t -> f:(key:'key -> data:'data1 -> 'data2 Core_kernel__.Import.option) -> ('key'data2) t
val filter_map : ('key'data1) t -> f:('data1 -> 'data2 Core_kernel__.Import.option) -> ('key'data2) t
val filter_keys : ('key'data1) t -> f:('key -> Core_kernel__.Import.bool) -> ('key'data1) t
val filter : ('key'data1) t -> f:('data1 -> Core_kernel__.Import.bool) -> ('key'data1) t
val filteri : ('key'data1) t -> f:(key:'key -> data:'data1 -> Core_kernel__.Import.bool) -> ('key'data1) t
val mapi : ('key'data1) t -> f:(key:'key -> data:'data1 -> 'data2) -> ('key'data2) t
val map : ('key'data1) t -> f:('data1 -> 'data2) -> ('key'data2) t
val for_alli : ('key'data) t -> f:(key:'key -> data:'data -> Core_kernel__.Import.bool) -> Core_kernel__.Import.bool
val existsi : ('key'data) t -> f:(key:'key -> data:'data -> Core_kernel__.Import.bool) -> Core_kernel__.Import.bool
val for_all : (_'data) t -> f:('data -> Core_kernel__.Import.bool) -> Core_kernel__.Import.bool
val exists : (_'data) t -> f:('data -> Core_kernel__.Import.bool) -> Core_kernel__.Import.bool
val length : (__) t -> Core_kernel__.Import.int
val mem : ('key_) t -> 'key -> Core_kernel__.Import.bool
val remove : ('key_) t -> 'key -> Core_kernel__.Import.unit
val set : ('a'b) t -> key:'a -> data:'b -> Core_kernel__.Import.unit
val add : ('a'b) t -> key:'a -> data:'b -> [ `Ok | `Duplicate of 'b ]
val add_exn : ('a'b) t -> key:'a -> data:'b -> Core_kernel__.Import.unit
val to_alist : ('key'data) t -> ('key * 'data) Core_kernel__.Import.list
val clear : (__) t -> Core_kernel__.Import.unit
module With_key : functor (Key : sig ... end) -> sig ... end
val debug : Core_kernel__.Import.bool Core_kernel__.Std_internal.ref

set debug := true to turn on debugging, including potentially slow invariant checking.