---
name: "Ephemeron.S"
section: "3o"
platform: "linux"
package: "ocaml"
version: "5.5.0-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/Ephemeron.S"
---

# Ephemeron.S(3o)

The output signature of the functors Ephemeron.K1.Make and Ephemeron.K2.Make.

## NAME

Ephemeron.S - The output signature of the functors Ephemeron.K1.Make and Ephemeron.K2.Make.

## Module type

Module type   Ephemeron.S

## Documentation

Module type **S**\
  \=  **sig end**

The output signature of the functors  **Ephemeron.K1.Make** and  **Ephemeron.K2.Make** . These hash tables are weak in the keys. If all the keys of a binding are alive the binding is kept, but if one of the keys of the binding is dead then the binding is removed.

Propose the same interface as usual hash table. However since the bindings are weak, 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.

*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
