mirror of
https://github.com/c-cube/ocaml-containers.git
synced 2025-12-05 19:00:31 -05:00
21 lines
No EOL
14 KiB
HTML
21 lines
No EOL
14 KiB
HTML
<!DOCTYPE html>
|
||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Poly (containers.CCHashtbl.Poly)</title><link rel="stylesheet" href="../../../odoc.css"/><meta charset="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><meta name="generator" content="doc-ock-html v1.0.0-1-g1fc9bf0"/></head><body><nav id="top"><a href="../index.html">Up</a> — <span class="package">package <a href="../../index.html">containers</a></span></nav><header><h1><span class="keyword">Module</span> <span class="module-path">CCHashtbl.Poly</span></h1></header><div class="spec val" id="val-get"><a href="#val-get" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>get : (<span class="type-var">'a</span>, <span class="type-var">'b</span>) Hashtbl.t <span class="keyword">‑></span> <span class="type-var">'a</span> <span class="keyword">‑></span> <span class="type-var">'b</span> option</code></div><div class="doc"><p>Safe version of <span class="xref-unresolved" title="unresolved reference to "Hashtbl.find"">Hashtbl.find</span>.</p></div></div><div class="spec val" id="val-get_or"><a href="#val-get_or" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>get_or : (<span class="type-var">'a</span>, <span class="type-var">'b</span>) Hashtbl.t <span class="keyword">‑></span> <span class="type-var">'a</span> <span class="keyword">‑></span> default:<span class="type-var">'b</span> <span class="keyword">‑></span> <span class="type-var">'b</span></code></div><div class="doc"><p><code class="code">get_or tbl k ~default</code> returns the value associated to <code class="code">k</code> if present,
|
||
and returns <code class="code">default</code> otherwise (if <code class="code">k</code> doesn't belong in <code class="code">tbl</code>).</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.16</li></ul></div></div><div class="spec val" id="val-keys"><a href="#val-keys" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>keys : (<span class="type-var">'a</span>, <span class="type-var">'b</span>) Hashtbl.t <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="../index.html#type-sequence">sequence</a></code></div><div class="doc"><p>Iterate on keys (similar order as <span class="xref-unresolved" title="unresolved reference to "Hashtbl.iter"">Hashtbl.iter</span>).</p></div></div><div class="spec val" id="val-values"><a href="#val-values" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>values : (<span class="type-var">'a</span>, <span class="type-var">'b</span>) Hashtbl.t <span class="keyword">‑></span> <span class="type-var">'b</span> <a href="../index.html#type-sequence">sequence</a></code></div><div class="doc"><p>Iterate on values in the table.</p></div></div><div class="spec val" id="val-keys_list"><a href="#val-keys_list" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>keys_list : (<span class="type-var">'a</span>, <span class="type-var">'b</span>) Hashtbl.t <span class="keyword">‑></span> <span class="type-var">'a</span> list</code></div><div class="doc"><p><code class="code">keys_list t</code> is the list of keys in <code class="code">t</code>.
|
||
If the key is in the Hashtable multiple times, all occurrences will be returned.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.8</li></ul></div></div><div class="spec val" id="val-values_list"><a href="#val-values_list" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>values_list : (<span class="type-var">'a</span>, <span class="type-var">'b</span>) Hashtbl.t <span class="keyword">‑></span> <span class="type-var">'b</span> list</code></div><div class="doc"><p><code class="code">values_list t</code> is the list of values in <code class="code">t</code>.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.8</li></ul></div></div><div class="spec val" id="val-map_list"><a href="#val-map_list" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>map_list : (<span class="type-var">'a</span> <span class="keyword">‑></span> <span class="type-var">'b</span> <span class="keyword">‑></span> <span class="type-var">'c</span>) <span class="keyword">‑></span> (<span class="type-var">'a</span>, <span class="type-var">'b</span>) Hashtbl.t <span class="keyword">‑></span> <span class="type-var">'c</span> list</code></div><div class="doc"><p>Map on a hashtable's items, collect into a list.</p></div></div><div class="spec val" id="val-incr"><a href="#val-incr" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>incr : ?⁠by:int <span class="keyword">‑></span> (<span class="type-var">'a</span>, int) Hashtbl.t <span class="keyword">‑></span> <span class="type-var">'a</span> <span class="keyword">‑></span> unit</code></div><div class="doc"><p><code class="code">incr ?by tbl x</code> increments or initializes the counter associated with <code class="code">x</code>.
|
||
If <code class="code">get tbl x = None</code>, then after update, <code class="code">get tbl x = Some 1</code>;
|
||
otherwise, if <code class="code">get tbl x = Some n</code>, now <code class="code">get tbl x = Some (n+1)</code>.</p><ul class="at-tag"><li><span class="at-tag parameter">Parameter</span> <span class="module-path">by</span>: if specified, the int value is incremented by <code class="code">by</code> rather than 1.</li><li><span class="at-tag since">Since</span>: 0.16</li></ul></div></div><div class="spec val" id="val-decr"><a href="#val-decr" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>decr : ?⁠by:int <span class="keyword">‑></span> (<span class="type-var">'a</span>, int) Hashtbl.t <span class="keyword">‑></span> <span class="type-var">'a</span> <span class="keyword">‑></span> unit</code></div><div class="doc"><p>Like <a href="index.html#val-incr">incr</a> but subtract 1 (or the value of <code class="code">by</code>).
|
||
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.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.16</li></ul></div></div><div class="spec val" id="val-to_seq"><a href="#val-to_seq" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>to_seq : (<span class="type-var">'a</span>, <span class="type-var">'b</span>) Hashtbl.t <span class="keyword">‑></span> (<span class="type-var">'a</span><span class="keyword"> * </span><span class="type-var">'b</span>) <a href="../index.html#type-sequence">sequence</a></code></div><div class="doc"><p>Iterate on bindings in the table.</p></div></div><div class="spec val" id="val-add_list"><a href="#val-add_list" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>add_list : (<span class="type-var">'a</span>, <span class="type-var">'b</span> list) Hashtbl.t <span class="keyword">‑></span> <span class="type-var">'a</span> <span class="keyword">‑></span> <span class="type-var">'b</span> <span class="keyword">‑></span> unit</code></div><div class="doc"><p><code class="code">add_list tbl x y</code> adds <code class="code">y</code> to the list <code class="code">x</code> is bound to. If <code class="code">x</code> is
|
||
not bound, it becomes bound to <code class="code">y</code>.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.16</li></ul></div></div><div class="spec val" id="val-add_seq"><a href="#val-add_seq" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>add_seq : (<span class="type-var">'a</span>, <span class="type-var">'b</span>) Hashtbl.t <span class="keyword">‑></span> (<span class="type-var">'a</span><span class="keyword"> * </span><span class="type-var">'b</span>) <a href="../index.html#type-sequence">sequence</a> <span class="keyword">‑></span> unit</code></div><div class="doc"><p>Add the corresponding pairs to the table, using <span class="xref-unresolved" title="unresolved reference to "Hashtbl.add"">Hashtbl.add</span>.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.16</li></ul></div></div><div class="spec val" id="val-of_seq"><a href="#val-of_seq" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>of_seq : (<span class="type-var">'a</span><span class="keyword"> * </span><span class="type-var">'b</span>) <a href="../index.html#type-sequence">sequence</a> <span class="keyword">‑></span> (<span class="type-var">'a</span>, <span class="type-var">'b</span>) Hashtbl.t</code></div><div class="doc"><p>From the given bindings, added in order.</p></div></div><div class="spec val" id="val-add_seq_count"><a href="#val-add_seq_count" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>add_seq_count : (<span class="type-var">'a</span>, int) Hashtbl.t <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="../index.html#type-sequence">sequence</a> <span class="keyword">‑></span> unit</code></div><div class="doc"><p><code class="code">add_seq_count tbl seq</code> increments the count of each element of <code class="code">seq</code>
|
||
by calling <a href="index.html#val-incr">incr</a>. This is useful for counting how many times each
|
||
element of <code class="code">seq</code> occurs.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.16</li></ul></div></div><div class="spec val" id="val-of_seq_count"><a href="#val-of_seq_count" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>of_seq_count : <span class="type-var">'a</span> <a href="../index.html#type-sequence">sequence</a> <span class="keyword">‑></span> (<span class="type-var">'a</span>, int) Hashtbl.t</code></div><div class="doc"><p>Similar to <a href="index.html#val-add_seq_count">add_seq_count</a>, but allocates a new table and returns it.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.16</li></ul></div></div><div class="spec val" id="val-to_list"><a href="#val-to_list" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>to_list : (<span class="type-var">'a</span>, <span class="type-var">'b</span>) Hashtbl.t <span class="keyword">‑></span> (<span class="type-var">'a</span><span class="keyword"> * </span><span class="type-var">'b</span>) list</code></div><div class="doc"><p>List of bindings (order unspecified).</p></div></div><div class="spec val" id="val-of_list"><a href="#val-of_list" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>of_list : (<span class="type-var">'a</span><span class="keyword"> * </span><span class="type-var">'b</span>) list <span class="keyword">‑></span> (<span class="type-var">'a</span>, <span class="type-var">'b</span>) Hashtbl.t</code></div><div class="doc"><p>Build a table from the given list of bindings <code class="code">k_i -> v_i</code>,
|
||
added in order using add. If a key occurs several times,
|
||
it will be added several times, and the visible binding
|
||
will be the last one.</p></div></div><div class="spec val" id="val-update"><a href="#val-update" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>update : (<span class="type-var">'a</span>, <span class="type-var">'b</span>) Hashtbl.t <span class="keyword">‑></span> f:(<span class="type-var">'a</span> <span class="keyword">‑></span> <span class="type-var">'b</span> option <span class="keyword">‑></span> <span class="type-var">'b</span> option) <span class="keyword">‑></span> k:<span class="type-var">'a</span> <span class="keyword">‑></span> unit</code></div><div class="doc"><p><code class="code">update tbl ~f ~k</code> updates key <code class="code">k</code> by calling <code class="code">f k (Some v)</code> if
|
||
<code class="code">k</code> was mapped to <code class="code">v</code>, or <code class="code">f k None</code> otherwise; if the call
|
||
returns <code class="code">None</code> then <code class="code">k</code> is removed/stays removed, if the call
|
||
returns <code class="code">Some v'</code> then the binding <code class="code">k -> v'</code> is inserted
|
||
using <span class="xref-unresolved" title="unresolved reference to "Hashtbl.replace"">Hashtbl.replace</span>.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.14</li></ul></div></div><div class="spec val" id="val-get_or_add"><a href="#val-get_or_add" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>get_or_add : (<span class="type-var">'a</span>, <span class="type-var">'b</span>) Hashtbl.t <span class="keyword">‑></span> f:(<span class="type-var">'a</span> <span class="keyword">‑></span> <span class="type-var">'b</span>) <span class="keyword">‑></span> k:<span class="type-var">'a</span> <span class="keyword">‑></span> <span class="type-var">'b</span></code></div><div class="doc"><p><code class="code">get_or_add tbl ~k ~f</code> finds and returns the binding of <code class="code">k</code>
|
||
in <code class="code">tbl</code>, if it exists. If it does not exist, then <code class="code">f k</code>
|
||
is called to obtain a new binding <code class="code">v</code>; <code class="code">k -> v</code> is added
|
||
to <code class="code">tbl</code> and <code class="code">v</code> is returned.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 1.0</li></ul></div></div><div class="spec val" id="val-pp"><a href="#val-pp" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>pp : <span class="type-var">'a</span> <a href="../index.html#type-printer">printer</a> <span class="keyword">‑></span> <span class="type-var">'b</span> <a href="../index.html#type-printer">printer</a> <span class="keyword">‑></span> (<span class="type-var">'a</span>, <span class="type-var">'b</span>) Hashtbl.t <a href="../index.html#type-printer">printer</a></code></div><div class="doc"></div></div></body></html> |