mirror of
https://github.com/c-cube/ocaml-containers.git
synced 2025-12-07 03:35:30 -05:00
12 lines
No EOL
21 KiB
HTML
12 lines
No EOL
21 KiB
HTML
<!DOCTYPE html>
|
|
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>MakeFull (containers.CCWBTree.MakeFull)</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">CCWBTree.MakeFull</span></h1></header><div class="doc"><p>Use the custom <code class="code">X.weight</code> function</p></div><h3 class="heading">Parameters</h3><div><div class="spec argument" id="argument-1-X"><a href="#argument-1-X" class="anchor"></a><div class="def argument"><code><a href="argument-1-X/index.html">X</a> : <a href="../index.html#module-type-KEY">KEY</a></code></div><div class="doc"></div></div></div><h3 class="heading">Signature</h3><div class="spec type" id="type-key"><a href="#type-key" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>key</code><code><span class="keyword"> = </span><a href="argument-1-X/index.html#type-t">X.t</a></code><code></code></div><div class="doc"></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></code><code></code></div><div class="doc"></div></div><div class="spec val" id="val-empty"><a href="#val-empty" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>empty : <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"></div></div><div class="spec val" id="val-is_empty"><a href="#val-is_empty" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>is_empty : <span class="type-var">_</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> bool</code></div><div class="doc"></div></div><div class="spec val" id="val-singleton"><a href="#val-singleton" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>singleton : <a href="index.html#type-key">key</a> <span class="keyword">‑></span> <span class="type-var">'a</span> <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"></div></div><div class="spec val" id="val-mem"><a href="#val-mem" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>mem : <a href="index.html#type-key">key</a> <span class="keyword">‑></span> <span class="type-var">_</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> bool</code></div><div class="doc"></div></div><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 : <a href="index.html#type-key">key</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> option</code></div><div class="doc"></div></div><div class="spec val" id="val-get_exn"><a href="#val-get_exn" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>get_exn : <a href="index.html#type-key">key</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></code></div><div class="doc"><ul class="at-tag"><li><span class="at-tag raise">Raises</span> <span class="module-path">Not_found</span>: if the key is not present.</li></ul></div></div><div class="spec val" id="val-nth"><a href="#val-nth" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>nth : int <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> (<a href="index.html#type-key">key</a><span class="keyword"> * </span><span class="type-var">'a</span>) option</code></div><div class="doc"><p><code class="code">nth i m</code> returns the <code class="code">i</code>-th <code class="code">key, value</code> in the ascending
|
|
order. Complexity is <code class="code">O(log (cardinal m))</code>.</p></div></div><div class="spec val" id="val-nth_exn"><a href="#val-nth_exn" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>nth_exn : int <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <a href="index.html#type-key">key</a><span class="keyword"> * </span><span class="type-var">'a</span></code></div><div class="doc"><ul class="at-tag"><li><span class="at-tag raise">Raises</span> <span class="module-path">Not_found</span>: if the index is invalid.</li></ul></div></div><div class="spec val" id="val-get_rank"><a href="#val-get_rank" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>get_rank : <a href="index.html#type-key">key</a> <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> [ `At of int | `After of int | `First ]</code></div><div class="doc"><p><code class="code">get_rank k m</code> looks for the rank of <code class="code">k</code> in <code class="code">m</code>, i.e. the index
|
|
of <code class="code">k</code> in the sorted list of bindings of <code class="code">m</code>.
|
|
<code class="code">let (`At n) = get_rank k m in nth_exn n m = get m k</code> should hold.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 1.4</li></ul></div></div><div class="spec val" id="val-add"><a href="#val-add" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>add : <a href="index.html#type-key">key</a> <span class="keyword">‑></span> <span class="type-var">'a</span> <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"></div></div><div class="spec val" id="val-remove"><a href="#val-remove" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>remove : <a href="index.html#type-key">key</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"></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 : <a href="index.html#type-key">key</a> <span class="keyword">‑></span> (<span class="type-var">'a</span> option <span class="keyword">‑></span> <span class="type-var">'a</span> option) <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><code class="code">update k f m</code> calls <code class="code">f (Some v)</code> if <code class="code">get k m = Some v</code>, <code class="code">f None</code>
|
|
otherwise. Then, if <code class="code">f</code> returns <code class="code">Some v'</code> it binds <code class="code">k</code> to <code class="code">v'</code>,
|
|
if <code class="code">f</code> returns <code class="code">None</code> it removes <code class="code">k</code>.</p></div></div><div class="spec val" id="val-cardinal"><a href="#val-cardinal" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>cardinal : <span class="type-var">_</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> int</code></div><div class="doc"></div></div><div class="spec val" id="val-weight"><a href="#val-weight" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>weight : <span class="type-var">_</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> int</code></div><div class="doc"></div></div><div class="spec val" id="val-fold"><a href="#val-fold" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>fold : f:(<span class="type-var">'b</span> <span class="keyword">‑></span> <a href="index.html#type-key">key</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> x:<span class="type-var">'b</span> <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">'b</span></code></div><div class="doc"></div></div><div class="spec val" id="val-mapi"><a href="#val-mapi" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>mapi : f:(<a href="index.html#type-key">key</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">'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></code></div><div class="doc"><p>Map values, giving both key and value. Will use <span class="xref-unresolved" title="unresolved reference to "WORD.of_list"">WORD.of_list</span> to rebuild keys.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.17</li></ul></div></div><div class="spec val" id="val-map"><a href="#val-map" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>map : f:(<span class="type-var">'a</span> <span class="keyword">‑></span> <span class="type-var">'b</span>) <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">'b</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Map values, giving only the value.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.17</li></ul></div></div><div class="spec val" id="val-iter"><a href="#val-iter" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>iter : f:(<a href="index.html#type-key">key</a> <span class="keyword">‑></span> <span class="type-var">'a</span> <span class="keyword">‑></span> unit) <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> unit</code></div><div class="doc"></div></div><div class="spec val" id="val-split"><a href="#val-split" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>split : <a href="index.html#type-key">key</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><span class="keyword"> * </span><span class="type-var">'a</span> option<span class="keyword"> * </span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p><code class="code">split k t</code> returns <code class="code">l, o, r</code> where <code class="code">l</code> is the part of the map
|
|
with keys smaller than <code class="code">k</code>, <code class="code">r</code> has keys bigger than <code class="code">k</code>,
|
|
and <code class="code">o = Some v</code> if <code class="code">k, v</code> belonged to the map.</p></div></div><div class="spec val" id="val-merge"><a href="#val-merge" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>merge : f:(<a href="index.html#type-key">key</a> <span class="keyword">‑></span> <span class="type-var">'a</span> option <span class="keyword">‑></span> <span class="type-var">'b</span> option <span class="keyword">‑></span> <span class="type-var">'c</span> option) <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">'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></code></div><div class="doc"><p>Like <span class="xref-unresolved" title="unresolved reference to "Map.S.merge""><span class="xref-unresolved" title="unresolved reference to "Map.S"">Map.S</span>.merge</span>.</p></div></div><div class="spec val" id="val-extract_min"><a href="#val-extract_min" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>extract_min : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <a href="index.html#type-key">key</a><span class="keyword"> * </span><span class="type-var">'a</span><span class="keyword"> * </span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p><code class="code">extract_min m</code> returns <code class="code">k, v, m'</code> where <code class="code">k,v</code> is the pair with the
|
|
smallest key in <code class="code">m</code>, and <code class="code">m'</code> does not contain <code class="code">k</code>.</p><ul class="at-tag"><li><span class="at-tag raise">Raises</span> <span class="module-path">Not_found</span>: if the map is empty.</li></ul></div></div><div class="spec val" id="val-extract_max"><a href="#val-extract_max" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>extract_max : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <a href="index.html#type-key">key</a><span class="keyword"> * </span><span class="type-var">'a</span><span class="keyword"> * </span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p><code class="code">extract_max m</code> returns <code class="code">k, v, m'</code> where <code class="code">k,v</code> is the pair with the
|
|
highest key in <code class="code">m</code>, and <code class="code">m'</code> does not contain <code class="code">k</code>.</p><ul class="at-tag"><li><span class="at-tag raise">Raises</span> <span class="module-path">Not_found</span>: if the map is empty.</li></ul></div></div><div class="spec val" id="val-choose"><a href="#val-choose" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>choose : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> (<a href="index.html#type-key">key</a><span class="keyword"> * </span><span class="type-var">'a</span>) option</code></div><div class="doc"></div></div><div class="spec val" id="val-choose_exn"><a href="#val-choose_exn" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>choose_exn : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <a href="index.html#type-key">key</a><span class="keyword"> * </span><span class="type-var">'a</span></code></div><div class="doc"><ul class="at-tag"><li><span class="at-tag raise">Raises</span> <span class="module-path">Not_found</span>: if the tree is empty.</li></ul></div></div><div class="spec val" id="val-random_choose"><a href="#val-random_choose" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>random_choose : Random.State.t <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <a href="index.html#type-key">key</a><span class="keyword"> * </span><span class="type-var">'a</span></code></div><div class="doc"><p>Randomly choose a (key,value) pair within the tree, using weights
|
|
as probability weights.</p><ul class="at-tag"><li><span class="at-tag raise">Raises</span> <span class="module-path">Not_found</span>: if the tree is empty.</li></ul></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> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> (<a href="index.html#type-key">key</a><span class="keyword"> * </span><span class="type-var">'a</span>) list <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"></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 : (<a href="index.html#type-key">key</a><span class="keyword"> * </span><span class="type-var">'a</span>) list <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"></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> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> (<a href="index.html#type-key">key</a><span class="keyword"> * </span><span class="type-var">'a</span>) list</code></div><div class="doc"></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> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> (<a href="index.html#type-key">key</a><span class="keyword"> * </span><span class="type-var">'a</span>) <a href="../index.html#type-sequence">sequence</a> <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"></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 : (<a href="index.html#type-key">key</a><span class="keyword"> * </span><span class="type-var">'a</span>) <a href="../index.html#type-sequence">sequence</a> <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"></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> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> (<a href="index.html#type-key">key</a><span class="keyword"> * </span><span class="type-var">'a</span>) <a href="../index.html#type-sequence">sequence</a></code></div><div class="doc"></div></div><div class="spec val" id="val-add_gen"><a href="#val-add_gen" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>add_gen : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> (<a href="index.html#type-key">key</a><span class="keyword"> * </span><span class="type-var">'a</span>) <a href="../index.html#type-gen">gen</a> <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"></div></div><div class="spec val" id="val-of_gen"><a href="#val-of_gen" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>of_gen : (<a href="index.html#type-key">key</a><span class="keyword"> * </span><span class="type-var">'a</span>) <a href="../index.html#type-gen">gen</a> <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"></div></div><div class="spec val" id="val-to_gen"><a href="#val-to_gen" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>to_gen : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> (<a href="index.html#type-key">key</a><span class="keyword"> * </span><span class="type-var">'a</span>) <a href="../index.html#type-gen">gen</a></code></div><div class="doc"></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 : <a href="index.html#type-key">key</a> <a href="../index.html#type-printer">printer</a> <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="../index.html#type-printer">printer</a> <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <a href="../index.html#type-printer">printer</a></code></div><div class="doc"><p>Renamed from <code class="code">val print</code>.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 2.0</li></ul></div></div></body></html> |