Ephemeron.K2.Make(3)

πŸ’– NAME πŸ’–

Ephemeron.K2.Make β€” functor building an implementation of a weak hash table πŸ’…βœ¨

This is the Ephemeron.K2.Make(3) page from the OCaml library, and she's lowkey iconic.

🧩 Module 🧩

Module Ephemeron.K2.Make

πŸ“š Documentation πŸ“š

🌸 Module Make

: (H1 : Hashtbl.HashedType) (H2 : Hashtbl.HashedType) -> sig end

Functor building an implementation of a weak hash table.

Parameters:

  • "H1" β€” Stdlib.Hashtbl.HashedType
  • "H2" β€” Stdlib.Hashtbl.HashedType

Okay bestie, the tea β˜•: she proposes the same interface as a usual hash table. But β€” and this is the plot twist β€” the bindings are weak. So even if mem h k is true, a subsequent find h k may raise Not_found because the garbage collector can run between the two. Literally the GC can pop in between, no cap. πŸ˜­πŸ’€

Here's the exact roster, no edits, no omissions, periodt:

  • type key
  • type !'a t
  • val create : int -> 'a t
  • val clear : 'a t -> unit
  • val reset : 'a t -> unit
  • val copy : 'a t -> 'a t
  • val add : 'a t -> key -> 'a -> unit
  • val remove : 'a t -> key -> unit
  • val find : 'a t -> key -> 'a
  • val find_opt : 'a t -> key -> 'a option
  • val find_all : 'a t -> key -> 'a list
  • val replace : 'a t -> key -> 'a -> unit
  • val mem : 'a t -> key -> bool
  • val length : 'a t -> int
  • val stats : 'a t -> Hashtbl.statistics
  • val add_seq : 'a t -> (key * 'a) Seq.t -> unit
  • val replace_seq : 'a t -> (key * 'a) Seq.t -> unit
  • val of_seq : (key * 'a) Seq.t -> 'a t
  • val clean : 'a t -> unit β€” remove all dead bindings. Done automatically during automatic resizing. 🧹
  • val stats_alive : 'a t -> Hashtbl.statistics β€” same as Hashtbl.SeededS.stats but only count the alive bindings πŸ‘‘

That's the whole page, bestie! πŸ’– Shoutout to OCamldoc for the source/version and the date stamp 2026-06-22 β€” this iconic little manual page is Ephemeron.K2.Make(3) and it ate. πŸŽ€πŸ«Ά

πŸ“¦ where this page comes from