mirror of
https://github.com/c-cube/ocaml-containers.git
synced 2025-12-06 11:15:31 -05:00
7 lines
No EOL
14 KiB
HTML
7 lines
No EOL
14 KiB
HTML
<!DOCTYPE html>
|
|
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>CCHash (containers.CCHash)</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">CCHash</span></h1></header><h2>Hash combinators</h2><h3>Definitions</h3><div class="spec type" id="type-hash"><a href="#type-hash" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>hash</code><code><span class="keyword"> = </span>int</code><code></code></div><div class="doc"><p>A hash value is a positive integer</p></div></div><div class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>'a t</code><code><span class="keyword"> = </span><span class="type-var">'a</span> <span class="keyword">‑></span> <a href="index.html#type-hash">hash</a></code><code></code></div><div class="doc"><p>A hash function for values of type <code class="code">'a</code></p></div></div><div class="spec val" id="val-const"><a href="#val-const" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>const : <a href="index.html#type-hash">hash</a> <span class="keyword">‑></span> <span class="type-var">_</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p><code class="code">return h</code> hashes any value into <code class="code">h</code>. Use with caution!.</p></div></div><div class="spec val" id="val-const0"><a href="#val-const0" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>const0 : <span class="type-var">_</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Always return 0. Useful for ignoring elements.
|
|
Example: <code class="code">Hash.(pair string const0)</code> will map pairs <code class="code">("a", 1)</code>
|
|
and <code class="code">("a", 2)</code> to the same hash, but not the same as <code class="code">("b", 1)</code></p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 1.5</li></ul></div></div><div class="spec val" id="val-int"><a href="#val-int" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>int : int <a href="index.html#type-t">t</a></code></div><div class="doc"></div></div><div class="spec val" id="val-bool"><a href="#val-bool" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>bool : bool <a href="index.html#type-t">t</a></code></div><div class="doc"></div></div><div class="spec val" id="val-char"><a href="#val-char" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>char : char <a href="index.html#type-t">t</a></code></div><div class="doc"></div></div><div class="spec val" id="val-int32"><a href="#val-int32" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>int32 : int32 <a href="index.html#type-t">t</a></code></div><div class="doc"></div></div><div class="spec val" id="val-int64"><a href="#val-int64" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>int64 : int64 <a href="index.html#type-t">t</a></code></div><div class="doc"></div></div><div class="spec val" id="val-nativeint"><a href="#val-nativeint" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>nativeint : nativeint <a href="index.html#type-t">t</a></code></div><div class="doc"></div></div><div class="spec val" id="val-slice"><a href="#val-slice" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>slice : string <span class="keyword">‑></span> int <span class="keyword">‑></span> int <a href="index.html#type-t">t</a></code></div><div class="doc"><p><code class="code">slice s i len state</code> hashes the slice <code class="code">i, ... i+len-1</code> of <code class="code">s</code>
|
|
into <code class="code">state</code></p></div></div><div class="spec val" id="val-string"><a href="#val-string" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>string : string <a href="index.html#type-t">t</a></code></div><div class="doc"></div></div><div class="spec val" id="val-list"><a href="#val-list" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>list : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'a</span> list <a href="index.html#type-t">t</a></code></div><div class="doc"></div></div><div class="spec val" id="val-array"><a href="#val-array" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>array : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'a</span> array <a href="index.html#type-t">t</a></code></div><div class="doc"></div></div><div class="spec val" id="val-opt"><a href="#val-opt" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>opt : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'a</span> option <a href="index.html#type-t">t</a></code></div><div class="doc"></div></div><div class="spec val" id="val-pair"><a href="#val-pair" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>pair : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'b</span> <a href="index.html#type-t">t</a> <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-t">t</a></code></div><div class="doc"></div></div><div class="spec val" id="val-triple"><a href="#val-triple" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>triple : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'b</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'c</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> (<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>) <a href="index.html#type-t">t</a></code></div><div class="doc"></div></div><div class="spec val" id="val-quad"><a href="#val-quad" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>quad : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'b</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'c</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'d</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> (<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">'d</span>) <a href="index.html#type-t">t</a></code></div><div class="doc"></div></div><div class="spec val" id="val-if_"><a href="#val-if_" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>if_ : bool <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Decide which hash function to use depending on the boolean</p></div></div><div class="spec val" id="val-poly"><a href="#val-poly" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>poly : <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>the regular polymorphic hash function</p></div></div><div class="spec val" id="val-list_comm"><a href="#val-list_comm" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>list_comm : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'a</span> list <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Commutative version of <a href="index.html#val-list">list</a>. Lists that are equal up to permutation
|
|
will have the same hash.</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-array_comm"><a href="#val-array_comm" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>array_comm : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'a</span> array <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Commutative version of <a href="index.html#val-array">array</a>. Arrays that are equal up to permutation
|
|
will have the same hash.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 1.0</li></ul></div></div><h3>Base hash combinators</h3><div class="spec val" id="val-combine"><a href="#val-combine" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>combine : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <a href="index.html#type-hash">hash</a> <span class="keyword">‑></span> <span class="type-var">'a</span> <span class="keyword">‑></span> <a href="index.html#type-hash">hash</a></code></div><div class="doc"></div></div><div class="spec val" id="val-combine2"><a href="#val-combine2" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>combine2 : <a href="index.html#type-hash">hash</a> <span class="keyword">‑></span> <a href="index.html#type-hash">hash</a> <span class="keyword">‑></span> <a href="index.html#type-hash">hash</a></code></div><div class="doc"></div></div><div class="spec val" id="val-combine3"><a href="#val-combine3" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>combine3 : <a href="index.html#type-hash">hash</a> <span class="keyword">‑></span> <a href="index.html#type-hash">hash</a> <span class="keyword">‑></span> <a href="index.html#type-hash">hash</a> <span class="keyword">‑></span> <a href="index.html#type-hash">hash</a></code></div><div class="doc"></div></div><div class="spec val" id="val-combine4"><a href="#val-combine4" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>combine4 : <a href="index.html#type-hash">hash</a> <span class="keyword">‑></span> <a href="index.html#type-hash">hash</a> <span class="keyword">‑></span> <a href="index.html#type-hash">hash</a> <span class="keyword">‑></span> <a href="index.html#type-hash">hash</a> <span class="keyword">‑></span> <a href="index.html#type-hash">hash</a></code></div><div class="doc"></div></div><h3>Iterators</h3><div class="spec type" id="type-sequence"><a href="#type-sequence" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>'a sequence</code><code><span class="keyword"> = </span>(<span class="type-var">'a</span> <span class="keyword">‑></span> unit) <span class="keyword">‑></span> unit</code><code></code></div><div class="doc"></div></div><div class="spec type" id="type-gen"><a href="#type-gen" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>'a gen</code><code><span class="keyword"> = </span>unit <span class="keyword">‑></span> <span class="type-var">'a</span> option</code><code></code></div><div class="doc"></div></div><div class="spec type" id="type-klist"><a href="#type-klist" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>'a klist</code><code><span class="keyword"> = </span>unit <span class="keyword">‑></span> [ `Nil | `Cons of <span class="type-var">'a</span><span class="keyword"> * </span><span class="type-var">'a</span> <a href="index.html#type-klist">klist</a> ]</code><code></code></div><div class="doc"></div></div><div class="spec val" id="val-seq"><a href="#val-seq" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>seq : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-sequence">sequence</a> <a href="index.html#type-t">t</a></code></div><div class="doc"></div></div><div class="spec val" id="val-gen"><a href="#val-gen" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>gen : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-gen">gen</a> <a href="index.html#type-t">t</a></code></div><div class="doc"></div></div><div class="spec val" id="val-klist"><a href="#val-klist" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>klist : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-klist">klist</a> <a href="index.html#type-t">t</a></code></div><div class="doc"></div></div></body></html> |