doc for 2.1

This commit is contained in:
Simon Cruanes 2018-03-28 20:36:52 -05:00
parent 77da23337d
commit 1b7afbcaa5
782 changed files with 4323 additions and 9 deletions

Binary file not shown.

View file

View file

@ -0,0 +1,18 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>CCBV (containers.data.CCBV)</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> &mdash; <span class="package">package <a href="../index.html">containers.data</a></span></nav><header><h1><span class="keyword">Module</span> <span class="module-path">CCBV</span></h1></header><h3>Imperative Bitvectors</h3><p><b>BREAKING CHANGES</b> since 1.2:
size is now stored along with the bitvector. Some functions have
a new signature.</p><p>The size of the bitvector used to be rounded up to the multiple of 30 or 62.
In other words some functions such as <a href="index.html#val-iter">iter</a> would iterate on more
bits than what was originally asked for. This is not the case anymore.</p><div class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>t</code><code></code><code></code></div><div class="doc"><p>A resizable bitvector</p></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 : unit <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Empty bitvector.</p></div></div><div class="spec val" id="val-create"><a href="#val-create" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>create : size:int <span class="keyword">&#8209;&gt;</span> bool <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Create a bitvector of given size, with given default value.</p></div></div><div class="spec val" id="val-copy"><a href="#val-copy" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>copy : <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Copy of bitvector.</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 : <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> int</code></div><div class="doc"><p>Number of bits set to one, seen as a set of bits.</p></div></div><div class="spec val" id="val-length"><a href="#val-length" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>length : <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> int</code></div><div class="doc"><p>Size of underlying bitvector.
This is not related to the underlying implementation.
Changed at 1.2</p></div></div><div class="spec val" id="val-capacity"><a href="#val-capacity" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>capacity : <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> int</code></div><div class="doc"><p>The number of bits this bitvector can store without resizing.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 1.2</li></ul></div></div><div class="spec val" id="val-resize"><a href="#val-resize" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>resize : <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> int <span class="keyword">&#8209;&gt;</span> unit</code></div><div class="doc"><p>Resize the BV so that it has the specified length. This can grow or shrink
the underlying bitvector.</p><ul class="at-tag"><li><span class="at-tag raise">Raises</span> <span class="module-path">Invalid_arg</span>: on negative sizes.</li></ul></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 : <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> bool</code></div><div class="doc"><p>Are there any true bits?</p></div></div><div class="spec val" id="val-set"><a href="#val-set" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>set : <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> int <span class="keyword">&#8209;&gt;</span> unit</code></div><div class="doc"><p>Set i-th bit, extending the bitvector if needed.</p></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-t">t</a> <span class="keyword">&#8209;&gt;</span> int <span class="keyword">&#8209;&gt;</span> bool</code></div><div class="doc"><p>Is the i-th bit true? Return false if the index is too high.</p></div></div><div class="spec val" id="val-reset"><a href="#val-reset" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>reset : <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> int <span class="keyword">&#8209;&gt;</span> unit</code></div><div class="doc"><p>Set i-th bit to 0, extending the bitvector if needed.</p></div></div><div class="spec val" id="val-flip"><a href="#val-flip" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>flip : <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> int <span class="keyword">&#8209;&gt;</span> unit</code></div><div class="doc"><p>Flip i-th bit, extending the bitvector if needed.</p></div></div><div class="spec val" id="val-clear"><a href="#val-clear" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>clear : <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> unit</code></div><div class="doc"><p>Set every bit to 0.</p></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 : <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> (int <span class="keyword">&#8209;&gt;</span> bool <span class="keyword">&#8209;&gt;</span> unit) <span class="keyword">&#8209;&gt;</span> unit</code></div><div class="doc"><p>Iterate on all bits.</p></div></div><div class="spec val" id="val-iter_true"><a href="#val-iter_true" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>iter_true : <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> (int <span class="keyword">&#8209;&gt;</span> unit) <span class="keyword">&#8209;&gt;</span> unit</code></div><div class="doc"><p>Iterate on bits set to 1.</p></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 : <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> int list</code></div><div class="doc"><p>List of indexes that are true.</p></div></div><div class="spec val" id="val-to_sorted_list"><a href="#val-to_sorted_list" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>to_sorted_list : <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> int list</code></div><div class="doc"><p>Same as <a href="index.html#val-to_list">to_list</a>, but also guarantees the list is sorted in
increasing order.</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 : int list <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>From a list of true bits.</p><p>The bits are interpreted as indices into the returned bitvector, so the final
bitvector will have <code class="code">length t</code> equal to 1 more than max of list indices.</p></div></div><div class="spec val" id="val-first"><a href="#val-first" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>first : <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> int option</code></div><div class="doc"><p>First set bit, or return <code class="code">None</code>.
Changed type at 1.2</p></div></div><div class="spec val" id="val-first_exn"><a href="#val-first_exn" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>first_exn : <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> int</code></div><div class="doc"><p>First set bit, or</p><ul class="at-tag"><li><span class="at-tag raise">Raises</span> <span class="module-path">Not_found</span>: if all bits are 0.</li><li><span class="at-tag since">Since</span>: 1.2</li></ul></div></div><div class="spec val" id="val-filter"><a href="#val-filter" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>filter : <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> (int <span class="keyword">&#8209;&gt;</span> bool) <span class="keyword">&#8209;&gt;</span> unit</code></div><div class="doc"><p><code class="code">filter bv p</code> only keeps the true bits of <code class="code">bv</code> whose <code class="code">index</code>
satisfies <code class="code">p index</code>.</p></div></div><div class="spec val" id="val-negate_self"><a href="#val-negate_self" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>negate_self : <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> unit</code></div><div class="doc"><p><code class="code">negate_self t</code> flips all of the bits in <code class="code">t</code>.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 1.2</li></ul></div></div><div class="spec val" id="val-negate"><a href="#val-negate" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>negate : <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p><code class="code">negate t</code> returns a copy of <code class="code">t</code> with all of the bits flipped.</p></div></div><div class="spec val" id="val-union_into"><a href="#val-union_into" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>union_into : into:<a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> unit</code></div><div class="doc"><p><code class="code">union_into ~into bv</code> sets <code class="code">into</code> to the union of itself and <code class="code">bv</code>.
Also updates the length of <code class="code">into</code> to be at least <code class="code">length bv</code>.</p></div></div><div class="spec val" id="val-inter_into"><a href="#val-inter_into" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>inter_into : into:<a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> unit</code></div><div class="doc"><p><code class="code">inter_into ~into bv</code> sets <code class="code">into</code> to the intersection of itself and <code class="code">bv</code>.
Also updates the length of <code class="code">into</code> to be at most <code class="code">length bv</code>.</p></div></div><div class="spec val" id="val-union"><a href="#val-union" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>union : <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p><code class="code">union bv1 bv2</code> returns the union of the two sets.</p></div></div><div class="spec val" id="val-inter"><a href="#val-inter" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>inter : <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p><code class="code">inter bv1 bv2</code> returns the intersection of the two sets.</p></div></div><div class="spec val" id="val-diff_into"><a href="#val-diff_into" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>diff_into : into:<a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> unit</code></div><div class="doc"><p><code class="code">diff_into ~into t</code> modifies <code class="code">into</code> with only the bits set but not in <code class="code">t</code>.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 1.2</li></ul></div></div><div class="spec val" id="val-diff"><a href="#val-diff" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>diff : <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p><code class="code">diff t1 t2</code> returns those bits found in <code class="code">t1</code> but not in <code class="code">t2</code>.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 1.2</li></ul></div></div><div class="spec val" id="val-select"><a href="#val-select" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>select : <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> array <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list</code></div><div class="doc"><p><code class="code">select arr bv</code> selects the elements of <code class="code">arr</code> whose index
corresponds to a true bit in <code class="code">bv</code>. If <code class="code">bv</code> is too short, elements of <code class="code">arr</code>
with too high an index cannot be selected and are therefore not
selected.</p></div></div><div class="spec val" id="val-selecti"><a href="#val-selecti" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>selecti : <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> array <span class="keyword">&#8209;&gt;</span> (<span class="type-var">'a</span><span class="keyword"> * </span>int) list</code></div><div class="doc"><p>Same as <a href="index.html#val-select">select</a>, but selected elements are paired with their indexes.</p></div></div><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">&#8209;&gt;</span> unit) <span class="keyword">&#8209;&gt;</span> unit</code><code></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 : <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> int <a href="index.html#type-sequence">sequence</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 : int <a href="index.html#type-sequence">sequence</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</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 : Format.formatter <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> unit</code></div><div class="doc"><p>Print the bitvector as a string of bits.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.13</li></ul></div></div></body></html>

Binary file not shown.

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>1-L (containers.data.CCBijection.Make.1-L)</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> &mdash; <span class="package">package <a href="../../../index.html">containers.data</a></span></nav><header><h1><span class="keyword">Parameter</span> <span class="module-path">CCBijection.Make.1-L</span></h1></header><div class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>t</code><code></code><code></code></div><div class="doc"></div></div><div class="spec val" id="val-compare"><a href="#val-compare" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>compare : <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> int</code></div><div class="doc"></div></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>2-R (containers.data.CCBijection.Make.2-R)</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> &mdash; <span class="package">package <a href="../../../index.html">containers.data</a></span></nav><header><h1><span class="keyword">Parameter</span> <span class="module-path">CCBijection.Make.2-R</span></h1></header><div class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>t</code><code></code><code></code></div><div class="doc"></div></div><div class="spec val" id="val-compare"><a href="#val-compare" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>compare : <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> int</code></div><div class="doc"></div></div></body></html>

View file

@ -0,0 +1,7 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Make (containers.data.CCBijection.Make)</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> &mdash; <span class="package">package <a href="../../index.html">containers.data</a></span></nav><header><h1><span class="keyword">Module</span> <span class="module-path">CCBijection.Make</span></h1></header><h3 class="heading">Parameters</h3><div><div class="spec argument" id="argument-2-R"><a href="#argument-2-R" class="anchor"></a><div class="def argument"><code><a href="argument-2-R/index.html">R</a> : <a href="../index.html#module-type-OrderedType">OrderedType</a></code></div><div class="doc"></div></div><div class="spec argument" id="argument-1-L"><a href="#argument-1-L" class="anchor"></a><div class="def argument"><code><a href="argument-1-L/index.html">L</a> : <a href="../index.html#module-type-OrderedType">OrderedType</a></code></div><div class="doc"></div></div></div><h3 class="heading">Signature</h3><div class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>t</code><code></code><code></code></div><div class="doc"></div></div><div class="spec type" id="type-left"><a href="#type-left" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>left</code><code><span class="keyword"> = </span><a href="argument-1-L/index.html#type-t">L.t</a></code><code></code></div><div class="doc"></div></div><div class="spec type" id="type-right"><a href="#type-right" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>right</code><code><span class="keyword"> = </span><a href="argument-2-R/index.html#type-t">R.t</a></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 : <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 : <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> bool</code></div><div class="doc"></div></div><div class="spec val" id="val-equal"><a href="#val-equal" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>equal : <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> bool</code></div><div class="doc"></div></div><div class="spec val" id="val-compare"><a href="#val-compare" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>compare : <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> int</code></div><div class="doc"></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-left">left</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-right">right</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Add <code class="code">left</code> and <code class="code">right</code> correspondence to bijection such that
<code class="code">left</code> and <code class="code">right</code> are unique in their respective sets and only
correspond to each other.</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 : <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> int</code></div><div class="doc"><p>Number of bindings. O(n) time</p></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-left">left</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-right">right</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> bool</code></div><div class="doc"><p>Checks both sides for key membership.</p></div></div><div class="spec val" id="val-mem_left"><a href="#val-mem_left" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>mem_left : <a href="index.html#type-left">left</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> bool</code></div><div class="doc"><p>Checks for membership of correspondence using <code class="code">left</code> key</p></div></div><div class="spec val" id="val-mem_right"><a href="#val-mem_right" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>mem_right : <a href="index.html#type-right">right</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> bool</code></div><div class="doc"><p>Checks for membership of correspondence using <code class="code">right</code> key</p></div></div><div class="spec val" id="val-find_left"><a href="#val-find_left" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>find_left : <a href="index.html#type-left">left</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-right">right</a></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 left is not found</li></ul></div></div><div class="spec val" id="val-find_right"><a href="#val-find_right" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>find_right : <a href="index.html#type-right">right</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-left">left</a></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 right is not found</li></ul></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-left">left</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-right">right</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Removes the <code class="code">left</code>, <code class="code">right</code> binding if it exists. Returns the
same bijection otherwise.</p></div></div><div class="spec val" id="val-remove_left"><a href="#val-remove_left" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>remove_left : <a href="index.html#type-left">left</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Remove the binding with <code class="code">left</code> key if it exists. Returns the
same bijection otherwise</p></div></div><div class="spec val" id="val-remove_right"><a href="#val-remove_right" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>remove_right : <a href="index.html#type-right">right</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Remove the binding with <code class="code">right</code> key if it exists. Returns the
same bijection otherwise</p></div></div><div class="spec val" id="val-list_left"><a href="#val-list_left" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>list_left : <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> (<a href="index.html#type-left">left</a><span class="keyword"> * </span><a href="index.html#type-right">right</a>) list</code></div><div class="doc"><p>returns the bindings as a list of (<code class="code">left</code>, <code class="code">right</code>) values</p></div></div><div class="spec val" id="val-list_right"><a href="#val-list_right" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>list_right : <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> (<a href="index.html#type-right">right</a><span class="keyword"> * </span><a href="index.html#type-left">left</a>) 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 : (<a href="index.html#type-left">left</a><span class="keyword"> * </span><a href="index.html#type-right">right</a>) <a href="../index.html#type-sequence">sequence</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</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-left">left</a><span class="keyword"> * </span><a href="index.html#type-right">right</a>) <a href="../index.html#type-sequence">sequence</a> <span class="keyword">&#8209;&gt;</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 : <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> (<a href="index.html#type-left">left</a><span class="keyword"> * </span><a href="index.html#type-right">right</a>) <a href="../index.html#type-sequence">sequence</a></code></div><div class="doc"></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 : (<a href="index.html#type-left">left</a><span class="keyword"> * </span><a href="index.html#type-right">right</a>) list <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</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-left">left</a><span class="keyword"> * </span><a href="index.html#type-right">right</a>) list <span class="keyword">&#8209;&gt;</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 : <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> (<a href="index.html#type-left">left</a><span class="keyword"> * </span><a href="index.html#type-right">right</a>) list</code></div><div class="doc"></div></div></body></html>

View file

@ -0,0 +1,4 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>CCBijection (containers.data.CCBijection)</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> &mdash; <span class="package">package <a href="../index.html">containers.data</a></span></nav><header><h1><span class="keyword">Module</span> <span class="module-path">CCBijection</span></h1></header><h2>Bijection</h2><p>
Represents 1-to-1 mappings between two types. Each element from the &quot;left&quot;
is mapped to one &quot;right&quot; value, and conversely.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 2.1</li></ul><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">&#8209;&gt;</span> unit) <span class="keyword">&#8209;&gt;</span> unit</code><code></code></div><div class="doc"></div></div><div class="spec module-type" id="module-type-OrderedType"><a href="#module-type-OrderedType" class="anchor"></a><div class="def module-type"><code><span class="keyword">module type </span><a href="module-type-OrderedType/index.html">OrderedType</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="doc"></div></div><div class="spec module-type" id="module-type-S"><a href="#module-type-S" class="anchor"></a><div class="def module-type"><code><span class="keyword">module type </span><a href="module-type-S/index.html">S</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="doc"></div></div><div class="spec module" id="module-Make"><a href="#module-Make" class="anchor"></a><div class="def module"><code><span class="keyword">module </span><a href="Make/index.html">Make</a> : <span class="keyword">functor</span> (<a href="Make/argument-1-L/index.html">L</a> : <a href="index.html#module-type-OrderedType">OrderedType</a>) -&gt; <span class="keyword">functor</span> (<a href="Make/argument-2-R/index.html">R</a> : <a href="index.html#module-type-OrderedType">OrderedType</a>) -&gt; <a href="index.html#module-type-S">S</a><span class="keyword"> with </span><span class="keyword">type </span><a href="Make/index.html#type-left">left</a><span class="keyword"> = </span><a href="Make/argument-1-L/index.html#type-t">L.t</a><span class="keyword"> and </span><span class="keyword">type </span><a href="Make/index.html#type-right">right</a><span class="keyword"> = </span><a href="Make/argument-2-R/index.html#type-t">R.t</a></code></div><div class="doc"></div></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>OrderedType (containers.data.CCBijection.OrderedType)</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> &mdash; <span class="package">package <a href="../../index.html">containers.data</a></span></nav><header><h1><span class="keyword">Module type</span> <span class="module-path">CCBijection.OrderedType</span></h1></header><div class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>t</code><code></code><code></code></div><div class="doc"></div></div><div class="spec val" id="val-compare"><a href="#val-compare" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>compare : <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> int</code></div><div class="doc"></div></div></body></html>

View file

@ -0,0 +1,7 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>S (containers.data.CCBijection.S)</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> &mdash; <span class="package">package <a href="../../index.html">containers.data</a></span></nav><header><h1><span class="keyword">Module type</span> <span class="module-path">CCBijection.S</span></h1></header><div class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>t</code><code></code><code></code></div><div class="doc"></div></div><div class="spec type" id="type-left"><a href="#type-left" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>left</code><code></code><code></code></div><div class="doc"></div></div><div class="spec type" id="type-right"><a href="#type-right" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>right</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 : <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 : <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> bool</code></div><div class="doc"></div></div><div class="spec val" id="val-equal"><a href="#val-equal" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>equal : <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> bool</code></div><div class="doc"></div></div><div class="spec val" id="val-compare"><a href="#val-compare" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>compare : <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> int</code></div><div class="doc"></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-left">left</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-right">right</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Add <code class="code">left</code> and <code class="code">right</code> correspondence to bijection such that
<code class="code">left</code> and <code class="code">right</code> are unique in their respective sets and only
correspond to each other.</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 : <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> int</code></div><div class="doc"><p>Number of bindings. O(n) time</p></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-left">left</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-right">right</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> bool</code></div><div class="doc"><p>Checks both sides for key membership.</p></div></div><div class="spec val" id="val-mem_left"><a href="#val-mem_left" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>mem_left : <a href="index.html#type-left">left</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> bool</code></div><div class="doc"><p>Checks for membership of correspondence using <code class="code">left</code> key</p></div></div><div class="spec val" id="val-mem_right"><a href="#val-mem_right" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>mem_right : <a href="index.html#type-right">right</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> bool</code></div><div class="doc"><p>Checks for membership of correspondence using <code class="code">right</code> key</p></div></div><div class="spec val" id="val-find_left"><a href="#val-find_left" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>find_left : <a href="index.html#type-left">left</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-right">right</a></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 left is not found</li></ul></div></div><div class="spec val" id="val-find_right"><a href="#val-find_right" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>find_right : <a href="index.html#type-right">right</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-left">left</a></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 right is not found</li></ul></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-left">left</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-right">right</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Removes the <code class="code">left</code>, <code class="code">right</code> binding if it exists. Returns the
same bijection otherwise.</p></div></div><div class="spec val" id="val-remove_left"><a href="#val-remove_left" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>remove_left : <a href="index.html#type-left">left</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Remove the binding with <code class="code">left</code> key if it exists. Returns the
same bijection otherwise</p></div></div><div class="spec val" id="val-remove_right"><a href="#val-remove_right" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>remove_right : <a href="index.html#type-right">right</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Remove the binding with <code class="code">right</code> key if it exists. Returns the
same bijection otherwise</p></div></div><div class="spec val" id="val-list_left"><a href="#val-list_left" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>list_left : <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> (<a href="index.html#type-left">left</a><span class="keyword"> * </span><a href="index.html#type-right">right</a>) list</code></div><div class="doc"><p>returns the bindings as a list of (<code class="code">left</code>, <code class="code">right</code>) values</p></div></div><div class="spec val" id="val-list_right"><a href="#val-list_right" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>list_right : <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> (<a href="index.html#type-right">right</a><span class="keyword"> * </span><a href="index.html#type-left">left</a>) 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 : (<a href="index.html#type-left">left</a><span class="keyword"> * </span><a href="index.html#type-right">right</a>) <a href="../index.html#type-sequence">sequence</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</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-left">left</a><span class="keyword"> * </span><a href="index.html#type-right">right</a>) <a href="../index.html#type-sequence">sequence</a> <span class="keyword">&#8209;&gt;</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 : <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> (<a href="index.html#type-left">left</a><span class="keyword"> * </span><a href="index.html#type-right">right</a>) <a href="../index.html#type-sequence">sequence</a></code></div><div class="doc"></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 : (<a href="index.html#type-left">left</a><span class="keyword"> * </span><a href="index.html#type-right">right</a>) list <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</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-left">left</a><span class="keyword"> * </span><a href="index.html#type-right">right</a>) list <span class="keyword">&#8209;&gt;</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 : <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> (<a href="index.html#type-left">left</a><span class="keyword"> * </span><a href="index.html#type-right">right</a>) list</code></div><div class="doc"></div></div></body></html>

Binary file not shown.

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>1-X (containers.data.CCBitField.Make.1-X)</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> &mdash; <span class="package">package <a href="../../../index.html">containers.data</a></span></nav><header><h1><span class="keyword">Parameter</span> <span class="module-path">CCBitField.Make.1-X</span></h1></header></body></html>

View file

@ -0,0 +1,4 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Make (containers.data.CCBitField.Make)</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> &mdash; <span class="package">package <a href="../../index.html">containers.data</a></span></nav><header><h1><span class="keyword">Module</span> <span class="module-path">CCBitField.Make</span></h1></header><div class="doc"><p>Create a new bitfield type</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> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="doc"></div></div></div><h3 class="heading">Signature</h3><div class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>t</code><code><span class="keyword"> = </span><span class="keyword">private </span>int</code><code></code></div><div class="doc"><p>Generative type of bitfields. Each instantiation of the functor
should create a new, incompatible type</p></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 : <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Empty bitfields (all bits 0).</p></div></div><div class="spec type" id="type-field"><a href="#type-field" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>field</code><code></code><code></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-field">field</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> bool</code></div><div class="doc"><p>Get the value of this field.</p></div></div><div class="spec val" id="val-set"><a href="#val-set" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>set : <a href="index.html#type-field">field</a> <span class="keyword">&#8209;&gt;</span> bool <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Set the value of this field.</p></div></div><div class="spec val" id="val-mk_field"><a href="#val-mk_field" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>mk_field : unit <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-field">field</a></code></div><div class="doc"><p>Make a new field.</p></div></div><div class="spec val" id="val-freeze"><a href="#val-freeze" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>freeze : unit <span class="keyword">&#8209;&gt;</span> unit</code></div><div class="doc"><p>Prevent new fields from being added. From now on, creating
a field will raise Frozen.</p></div></div><div class="spec val" id="val-total_width"><a href="#val-total_width" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>total_width : unit <span class="keyword">&#8209;&gt;</span> int</code></div><div class="doc"><p>Current width of the bitfield.</p></div></div></body></html>

View file

@ -0,0 +1,15 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>CCBitField (containers.data.CCBitField)</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> &mdash; <span class="package">package <a href="../index.html">containers.data</a></span></nav><header><h1><span class="keyword">Module</span> <span class="module-path">CCBitField</span></h1></header><h2>Bit Field</h2><p>This module defines efficient bitfields
up to 30 or 62 bits (depending on the architecture) in
a relatively type-safe way.</p><pre><code class="code"> module B = CCBitField.Make(struct end);;
let x = B.mk_field ()
let y = B.mk_field ()
let z = B.mk_field ()
let f = B.empty |&gt; B.set x true |&gt; B.set y true;;
assert (not (B.get z f)) ;;
assert (f |&gt; B.set z true |&gt; B.get z);;
</code></pre><div class="spec exception" id="exception-TooManyFields"><a href="#exception-TooManyFields" class="anchor"></a><div class="def exception"><code><span class="keyword">exception </span></code><code><span class="exception">TooManyFields</span></code></div><div class="doc"><p>Raised when too many fields are packed into one bitfield.</p></div></div><div class="spec exception" id="exception-Frozen"><a href="#exception-Frozen" class="anchor"></a><div class="def exception"><code><span class="keyword">exception </span></code><code><span class="exception">Frozen</span></code></div><div class="doc"><p>Raised when a frozen bitfield is modified.</p></div></div><div class="spec val" id="val-max_width"><a href="#val-max_width" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>max_width : int</code></div><div class="doc"><p>System-dependent maximum width for a bitfield, typically 30 or 62.</p></div></div><div class="spec module-type" id="module-type-S"><a href="#module-type-S" class="anchor"></a><div class="def module-type"><code><span class="keyword">module type </span><a href="module-type-S/index.html">S</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="doc"><h3>Bitfield Signature</h3></div></div><div class="spec module" id="module-Make"><a href="#module-Make" class="anchor"></a><div class="def module"><code><span class="keyword">module </span><a href="Make/index.html">Make</a> : <span class="keyword">functor</span> (<a href="Make/argument-1-X/index.html">X</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span>) -&gt; <a href="index.html#module-type-S">S</a></code></div><div class="doc"><p>Create a new bitfield type</p></div></div></body></html>

View file

@ -0,0 +1,4 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>S (containers.data.CCBitField.S)</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> &mdash; <span class="package">package <a href="../../index.html">containers.data</a></span></nav><header><h1><span class="keyword">Module type</span> <span class="module-path">CCBitField.S</span></h1></header><div class="doc"><h3>Bitfield Signature</h3></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>t</code><code><span class="keyword"> = </span><span class="keyword">private </span>int</code><code></code></div><div class="doc"><p>Generative type of bitfields. Each instantiation of the functor
should create a new, incompatible type</p></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 : <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Empty bitfields (all bits 0).</p></div></div><div class="spec type" id="type-field"><a href="#type-field" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>field</code><code></code><code></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-field">field</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> bool</code></div><div class="doc"><p>Get the value of this field.</p></div></div><div class="spec val" id="val-set"><a href="#val-set" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>set : <a href="index.html#type-field">field</a> <span class="keyword">&#8209;&gt;</span> bool <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Set the value of this field.</p></div></div><div class="spec val" id="val-mk_field"><a href="#val-mk_field" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>mk_field : unit <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-field">field</a></code></div><div class="doc"><p>Make a new field.</p></div></div><div class="spec val" id="val-freeze"><a href="#val-freeze" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>freeze : unit <span class="keyword">&#8209;&gt;</span> unit</code></div><div class="doc"><p>Prevent new fields from being added. From now on, creating
a field will raise Frozen.</p></div></div><div class="spec val" id="val-total_width"><a href="#val-total_width" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>total_width : unit <span class="keyword">&#8209;&gt;</span> int</code></div><div class="doc"><p>Current width of the bitfield.</p></div></div></body></html>

Binary file not shown.

View file

@ -0,0 +1,38 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>CCCache (containers.data.CCCache)</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> &mdash; <span class="package">package <a href="../index.html">containers.data</a></span></nav><header><h1><span class="keyword">Module</span> <span class="module-path">CCCache</span></h1></header><h2>Caches</h2><p>Particularly useful for memoization. See <a href="index.html#val-with_cache">with_cache</a> and <a href="index.html#val-with_cache_rec">with_cache_rec</a>
for more details.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.6</li></ul><div class="spec type" id="type-equal"><a href="#type-equal" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>'a equal</code><code><span class="keyword"> = </span><span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> bool</code><code></code></div><div class="doc"></div></div><div class="spec type" id="type-hash"><a href="#type-hash" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>'a hash</code><code><span class="keyword"> = </span><span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> int</code><code></code></div><div class="doc"></div></div><h3>Value interface</h3><p>Typical use case: one wants to memoize a function <code class="code">f : 'a -&gt; 'b</code>. Code sample:
</p><pre><code class="code"> let f x =
print_endline &quot;call f&quot;;
x + 1;;
let f' = with_cache (lru 256) f;;
f' 0;; (* prints *)
f' 1;; (* prints *)
f' 0;; (* doesn't print, returns cached value *)</code></pre><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.6</li></ul><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, 'b) t</code><code></code><code></code></div><div class="doc"></div></div><div class="spec val" id="val-clear"><a href="#val-clear" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>clear : (<span class="type-var">_</span>, <span class="type-var">_</span>) <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> unit</code></div><div class="doc"><p>Clear the content of the cache.</p></div></div><div class="spec type" id="type-callback"><a href="#type-callback" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>('a, 'b) callback</code><code><span class="keyword"> = </span>in_cache:bool <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> <span class="keyword">&#8209;&gt;</span> unit</code><code></code></div><div class="doc"><p>Type of the callback that is called once a cached value is found
or not.
Should never raise.</p><ul class="at-tag"><li><span class="at-tag parameter">Parameter</span> <span class="module-path">in_cache</span>: is <code class="code">true</code> if the value was in cache, <code class="code">false</code>
if the value was just produced.</li><li><span class="at-tag since">Since</span>: 1.3</li></ul></div></div><div class="spec val" id="val-with_cache"><a href="#val-with_cache" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>with_cache : ?&#8288;cb:(<span class="type-var">'a</span>, <span class="type-var">'b</span>) <a href="index.html#type-callback">callback</a> <span class="keyword">&#8209;&gt;</span> (<span class="type-var">'a</span>, <span class="type-var">'b</span>) <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> (<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span>) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span></code></div><div class="doc"><p><code class="code">with_cache c f</code> behaves like <code class="code">f</code>, but caches calls to <code class="code">f</code> in the
cache <code class="code">c</code>. It always returns the same value as
<code class="code">f x</code>, if <code class="code">f x</code> returns, or raise the same exception.
However, <code class="code">f</code> may not be called if <code class="code">x</code> is in the cache.</p><ul class="at-tag"><li><span class="at-tag parameter">Parameter</span> <span class="module-path">cb</span>: called after the value is generated or retrieved.</li></ul></div></div><div class="spec val" id="val-with_cache_rec"><a href="#val-with_cache_rec" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>with_cache_rec : ?&#8288;cb:(<span class="type-var">'a</span>, <span class="type-var">'b</span>) <a href="index.html#type-callback">callback</a> <span class="keyword">&#8209;&gt;</span> (<span class="type-var">'a</span>, <span class="type-var">'b</span>) <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> ((<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span>) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span>) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span></code></div><div class="doc"><p><code class="code">with_cache_rec c f</code> is a function that first, applies <code class="code">f</code> to
some <code class="code">f' = fix f</code>, such that recursive calls to <code class="code">f'</code> are cached in <code class="code">c</code>.
It is similar to <a href="index.html#val-with_cache">with_cache</a> but with a function that takes as
first argument its own recursive version.
Example (memoized Fibonacci function):
</p><pre><code class="code"> let fib = with_cache_rec (lru 256)
(fun fib' n -&gt; match n with
| 1 | 2 -&gt; 1
| _ -&gt; fib' (n-1) + fib' (n-2)
);;
fib 70;;</code></pre><ul class="at-tag"><li><span class="at-tag parameter">Parameter</span> <span class="module-path">cb</span>: called after the value is generated or retrieved.</li></ul></div></div><div class="spec val" id="val-size"><a href="#val-size" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>size : (<span class="type-var">_</span>, <span class="type-var">_</span>) <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> int</code></div><div class="doc"><p>Size of the cache (number of entries). At most linear in the number
of entries.</p></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 : (<span class="type-var">'a</span>, <span class="type-var">'b</span>) <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> (<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> <span class="keyword">&#8209;&gt;</span> unit) <span class="keyword">&#8209;&gt;</span> unit</code></div><div class="doc"><p>Iterate on cached values. Should yield <code class="code">size cache</code> pairs.</p></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 : (<span class="type-var">'a</span>, <span class="type-var">'b</span>) <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> <span class="keyword">&#8209;&gt;</span> bool</code></div><div class="doc"><p>Manually add a cached value. Return <code class="code">true</code> if the value has successfully
been added, and <code class="code">false</code> if the value was already bound.</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-dummy"><a href="#val-dummy" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>dummy : (<span class="type-var">'a</span>, <span class="type-var">'b</span>) <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Dummy cache, never stores any value.</p></div></div><div class="spec val" id="val-linear"><a href="#val-linear" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>linear : eq:<span class="type-var">'a</span> <a href="index.html#type-equal">equal</a> <span class="keyword">&#8209;&gt;</span> int <span class="keyword">&#8209;&gt;</span> (<span class="type-var">'a</span>, <span class="type-var">'b</span>) <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Linear cache with the given size. It stores key/value pairs in
an array and does linear search at every call, so it should only be used
with small size.</p><ul class="at-tag"><li><span class="at-tag parameter">Parameter</span> <span class="module-path">eq</span>: optional equality predicate for keys.</li></ul></div></div><div class="spec val" id="val-replacing"><a href="#val-replacing" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>replacing : eq:<span class="type-var">'a</span> <a href="index.html#type-equal">equal</a> <span class="keyword">&#8209;&gt;</span> ?&#8288;hash:<span class="type-var">'a</span> <a href="index.html#type-hash">hash</a> <span class="keyword">&#8209;&gt;</span> int <span class="keyword">&#8209;&gt;</span> (<span class="type-var">'a</span>, <span class="type-var">'b</span>) <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Replacing cache of the given size. Equality and hash functions can be
parametrized. It's a hash table that handles collisions by replacing
the old value with the new (so a cache entry is evicted when another
entry with the same hash (modulo size) is added).
Never grows wider than the given size.</p></div></div><div class="spec val" id="val-lru"><a href="#val-lru" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>lru : eq:<span class="type-var">'a</span> <a href="index.html#type-equal">equal</a> <span class="keyword">&#8209;&gt;</span> ?&#8288;hash:<span class="type-var">'a</span> <a href="index.html#type-hash">hash</a> <span class="keyword">&#8209;&gt;</span> int <span class="keyword">&#8209;&gt;</span> (<span class="type-var">'a</span>, <span class="type-var">'b</span>) <a href="index.html#type-t">t</a></code></div><div class="doc"><p>LRU cache of the given size (&quot;Least Recently Used&quot;: keys that have not been
used recently are deleted first). Never grows wider than the given size.</p></div></div><div class="spec val" id="val-unbounded"><a href="#val-unbounded" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>unbounded : eq:<span class="type-var">'a</span> <a href="index.html#type-equal">equal</a> <span class="keyword">&#8209;&gt;</span> ?&#8288;hash:<span class="type-var">'a</span> <a href="index.html#type-hash">hash</a> <span class="keyword">&#8209;&gt;</span> int <span class="keyword">&#8209;&gt;</span> (<span class="type-var">'a</span>, <span class="type-var">'b</span>) <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Unbounded cache, backed by a Hash table. Will grow forever
unless <a href="index.html#val-clear">clear</a> is called manually.</p></div></div></body></html>

Binary file not shown.

View file

@ -0,0 +1,14 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>CCDeque (containers.data.CCDeque)</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> &mdash; <span class="package">package <a href="../index.html">containers.data</a></span></nav><header><h1><span class="keyword">Module</span> <span class="module-path">CCDeque</span></h1></header><h2>Imperative deque</h2><p>This structure provides fast access to its front and back elements,
with O(1) operations.</p><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"><p>Contains 'a elements, queue in both ways</p></div></div><div class="spec exception" id="exception-Empty"><a href="#exception-Empty" class="anchor"></a><div class="def exception"><code><span class="keyword">exception </span></code><code><span class="exception">Empty</span></code></div><div class="doc"></div></div><div class="spec val" id="val-create"><a href="#val-create" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>create : unit <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>New deque.</p></div></div><div class="spec val" id="val-clear"><a href="#val-clear" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>clear : <span class="type-var">_</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> unit</code></div><div class="doc"><p>Remove all elements.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.13</li></ul></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">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> bool</code></div><div class="doc"><p>Is the deque empty?</p></div></div><div class="spec val" id="val-equal"><a href="#val-equal" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>equal : eq:(<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> bool) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> bool</code></div><div class="doc"><p><code class="code">equal a b</code> checks whether <code class="code">a</code> and <code class="code">b</code> contain the same sequence of
elements.</p><ul class="at-tag"><li><span class="at-tag parameter">Parameter</span> <span class="module-path">eq</span>: comparison function for elements.</li><li><span class="at-tag since">Since</span>: 0.13</li></ul></div></div><div class="spec val" id="val-compare"><a href="#val-compare" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>compare : cmp:(<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> int) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> int</code></div><div class="doc"><p><code class="code">compare a b</code> compares lexicographically <code class="code">a</code> and <code class="code">b</code></p><ul class="at-tag"><li><span class="at-tag parameter">Parameter</span> <span class="module-path">cmp</span>: comparison function for elements.</li><li><span class="at-tag since">Since</span>: 0.13</li></ul></div></div><div class="spec val" id="val-length"><a href="#val-length" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>length : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> int</code></div><div class="doc"><p>Number of elements.
Used to be linear time, now constant time.</p></div></div><div class="spec val" id="val-push_front"><a href="#val-push_front" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>push_front : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> unit</code></div><div class="doc"><p>Push value at the front.</p></div></div><div class="spec val" id="val-push_back"><a href="#val-push_back" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>push_back : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> unit</code></div><div class="doc"><p>Push value at the back.</p></div></div><div class="spec val" id="val-peek_front"><a href="#val-peek_front" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>peek_front : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span></code></div><div class="doc"><p>First value, or</p><ul class="at-tag"><li><span class="at-tag raise">Raises</span> <span class="module-path">Empty</span>: if empty.</li></ul></div></div><div class="spec val" id="val-peek_back"><a href="#val-peek_back" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>peek_back : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span></code></div><div class="doc"><p>Last value, or</p><ul class="at-tag"><li><span class="at-tag raise">Raises</span> <span class="module-path">Empty</span>: if empty.</li></ul></div></div><div class="spec val" id="val-take_back"><a href="#val-take_back" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>take_back : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span></code></div><div class="doc"><p>Take last value, or</p><ul class="at-tag"><li><span class="at-tag raise">Raises</span> <span class="module-path">Empty</span>: if empty.</li></ul></div></div><div class="spec val" id="val-take_front"><a href="#val-take_front" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>take_front : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span></code></div><div class="doc"><p>Take first value, or</p><ul class="at-tag"><li><span class="at-tag raise">Raises</span> <span class="module-path">Empty</span>: if empty.</li></ul></div></div><div class="spec val" id="val-append_front"><a href="#val-append_front" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>append_front : into:<span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> unit</code></div><div class="doc"><p><code class="code">append_front ~into q</code> adds all elements of <code class="code">q</code> at the front
of <code class="code">into</code>.
<code class="code">O(length q)</code> in time.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.13</li></ul></div></div><div class="spec val" id="val-append_back"><a href="#val-append_back" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>append_back : into:<span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> unit</code></div><div class="doc"><p><code class="code">append_back ~into q</code> adds all elements of <code class="code">q</code> at the back of <code class="code">into</code>.
<code class="code">O(length q)</code> in time.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.13</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 : (<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> unit) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> unit</code></div><div class="doc"><p>Iterate on elements.</p></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 : (<span class="type-var">'b</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span>) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span></code></div><div class="doc"><p>Fold on elements.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.13</li></ul></div></div><h3>Conversions</h3><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">&#8209;&gt;</span> <span class="type-var">'a</span> option</code><code></code></div><div class="doc"></div></div><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">&#8209;&gt;</span> unit) <span class="keyword">&#8209;&gt;</span> unit</code><code></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 : <span class="type-var">'a</span> <a href="index.html#type-sequence">sequence</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Create a deque from the sequence.
Optional argument <code class="code">deque</code> disappears, use <a href="index.html#val-add_seq_back">add_seq_back</a> instead since
0.13</p></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">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-sequence">sequence</a></code></div><div class="doc"><p>Iterate on the elements.</p></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 : <span class="type-var">'a</span> <a href="index.html#type-gen">gen</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p><code class="code">of_gen g</code> makes a deque containing the elements of <code class="code">g</code>.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.13</li></ul></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">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-gen">gen</a></code></div><div class="doc"><p>Iterate on the elements of the deque.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.13</li></ul></div></div><div class="spec val" id="val-add_seq_front"><a href="#val-add_seq_front" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>add_seq_front : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-sequence">sequence</a> <span class="keyword">&#8209;&gt;</span> unit</code></div><div class="doc"><p><code class="code">add_seq_front q seq</code> adds elements of <code class="code">seq</code> into the front of <code class="code">q</code>,
in reverse order.
<code class="code">O(n)</code> in time, where <code class="code">n</code> is the number of elements to add.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.13</li></ul></div></div><div class="spec val" id="val-add_seq_back"><a href="#val-add_seq_back" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>add_seq_back : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-sequence">sequence</a> <span class="keyword">&#8209;&gt;</span> unit</code></div><div class="doc"><p><code class="code">add_seq_back q seq</code> adds elements of <code class="code">seq</code> into the back of <code class="code">q</code>,
in order.
<code class="code">O(n)</code> in time, where <code class="code">n</code> is the number of elements to add.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.13</li></ul></div></div><div class="spec val" id="val-copy"><a href="#val-copy" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>copy : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Fresh copy, <code class="code">O(n)</code> in time.</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> list <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Conversion from list, in order.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.13</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> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list</code></div><div class="doc"><p>List of elements, in order. Less efficient than <a href="index.html#val-to_rev_list">to_rev_list</a>.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.13</li></ul></div></div><div class="spec val" id="val-to_rev_list"><a href="#val-to_rev_list" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>to_rev_list : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list</code></div><div class="doc"><p>Efficient conversion to list, in reverse order.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.13</li></ul></div></div><h3>print</h3><div class="spec type" id="type-printer"><a href="#type-printer" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>'a printer</code><code><span class="keyword"> = </span>Format.formatter <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> unit</code><code></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 : <span class="type-var">'a</span> <a href="index.html#type-printer">printer</a> <span class="keyword">&#8209;&gt;</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>Print the elements.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.13</li></ul></div></div></body></html>

Binary file not shown.

File diff suppressed because one or more lines are too long

Binary file not shown.

File diff suppressed because one or more lines are too long

Binary file not shown.

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Lazy_tree (containers.data.CCGraph.Lazy_tree)</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> &mdash; <span class="package">package <a href="../../index.html">containers.data</a></span></nav><header><h1><span class="keyword">Module</span> <span class="module-path">CCGraph.Lazy_tree</span></h1></header><div class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>('v, 'e) t</code><code></code><code><span class="keyword"> = </span></code><code>{</code><table class="record"><tr id="type-t.vertex" class="anchored"><td class="def field"><a href="#type-t.vertex" class="anchor"></a><code>vertex : <span class="type-var">'v</span>;</code></td></tr><tr id="type-t.children" class="anchored"><td class="def field"><a href="#type-t.children" class="anchor"></a><code>children : (<span class="type-var">'e</span><span class="keyword"> * </span>(<span class="type-var">'v</span>, <span class="type-var">'e</span>) <a href="index.html#type-t">t</a>) list Lazy.t;</code></td></tr></table><code>}</code><code></code></div><div class="doc"></div></div><div class="spec val" id="val-map_v"><a href="#val-map_v" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>map_v : (<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span>) <span class="keyword">&#8209;&gt;</span> (<span class="type-var">'a</span>, <span class="type-var">'e</span>) <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> (<span class="type-var">'b</span>, <span class="type-var">'e</span>) <a href="index.html#type-t">t</a></code></div><div class="doc"></div></div><div class="spec val" id="val-fold_v"><a href="#val-fold_v" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>fold_v : (<span class="type-var">'acc</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'v</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'acc</span>) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'acc</span> <span class="keyword">&#8209;&gt;</span> (<span class="type-var">'v</span>, <span class="type-var">_</span>) <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'acc</span></code></div><div class="doc"></div></div></body></html>

View file

@ -0,0 +1,4 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Map (containers.data.CCGraph.Map)</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> &mdash; <span class="package">package <a href="../../index.html">containers.data</a></span></nav><header><h1><span class="keyword">Module</span> <span class="module-path">CCGraph.Map</span></h1></header><h3 class="heading">Parameters</h3><div><div class="spec argument" id="argument-1-O"><a href="#argument-1-O" class="anchor"></a><div class="def argument"><code>O : Map.OrderedType</code></div><div class="doc"></div></div></div><h3 class="heading">Signature</h3><div class="spec type" id="type-vertex"><a href="#type-vertex" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>vertex</code><code><span class="keyword"> = </span><a href="index.html#argument-1-O">O</a>.t</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-as_graph"><a href="#val-as_graph" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>as_graph : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> (<a href="index.html#type-vertex">vertex</a>, <span class="type-var">'a</span>) <a href="../index.html#type-graph">graph</a></code></div><div class="doc"><p>Graph view of the map.</p></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-add_edge"><a href="#val-add_edge" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>add_edge : <a href="index.html#type-vertex">vertex</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-vertex">vertex</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</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_edge"><a href="#val-remove_edge" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>remove_edge : <a href="index.html#type-vertex">vertex</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-vertex">vertex</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</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-add"><a href="#val-add" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>add : <a href="index.html#type-vertex">vertex</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Add a vertex, possibly with no outgoing edge.</p></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-vertex">vertex</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Remove the vertex and all its outgoing edges.
Edges that point to the vertex are <b>NOT</b> removed, they must be
manually removed with <a href="index.html#val-remove_edge">remove_edge</a>.</p></div></div><div class="spec val" id="val-union"><a href="#val-union" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>union : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</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-vertices"><a href="#val-vertices" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>vertices : <span class="type-var">_</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-vertex">vertex</a> <a href="../index.html#type-sequence">sequence</a></code></div><div class="doc"></div></div><div class="spec val" id="val-vertices_l"><a href="#val-vertices_l" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>vertices_l : <span class="type-var">_</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-vertex">vertex</a> list</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-vertex">vertex</a><span class="keyword"> * </span><span class="type-var">'a</span><span class="keyword"> * </span><a href="index.html#type-vertex">vertex</a>) list <span class="keyword">&#8209;&gt;</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-add_list"><a href="#val-add_list" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>add_list : (<a href="index.html#type-vertex">vertex</a><span class="keyword"> * </span><span class="type-var">'a</span><span class="keyword"> * </span><a href="index.html#type-vertex">vertex</a>) list <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</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">&#8209;&gt;</span> (<a href="index.html#type-vertex">vertex</a><span class="keyword"> * </span><span class="type-var">'a</span><span class="keyword"> * </span><a href="index.html#type-vertex">vertex</a>) list</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-vertex">vertex</a><span class="keyword"> * </span><span class="type-var">'a</span><span class="keyword"> * </span><a href="index.html#type-vertex">vertex</a>) <a href="../index.html#type-sequence">sequence</a> <span class="keyword">&#8209;&gt;</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-add_seq"><a href="#val-add_seq" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>add_seq : (<a href="index.html#type-vertex">vertex</a><span class="keyword"> * </span><span class="type-var">'a</span><span class="keyword"> * </span><a href="index.html#type-vertex">vertex</a>) <a href="../index.html#type-sequence">sequence</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</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">&#8209;&gt;</span> (<a href="index.html#type-vertex">vertex</a><span class="keyword"> * </span><span class="type-var">'a</span><span class="keyword"> * </span><a href="index.html#type-vertex">vertex</a>) <a href="../index.html#type-sequence">sequence</a></code></div><div class="doc"></div></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Seq (containers.data.CCGraph.Seq)</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> &mdash; <span class="package">package <a href="../../index.html">containers.data</a></span></nav><header><h1><span class="keyword">Module</span> <span class="module-path">CCGraph.Seq</span></h1></header><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> <a href="../index.html#type-sequence">sequence</a></code><code></code></div><div class="doc"></div></div><div class="spec val" id="val-return"><a href="#val-return" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>return : <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</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-(&gt;&gt;=)"><a href="#val-(&gt;&gt;=)" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>(&gt;&gt;=) : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> (<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> <a href="index.html#type-t">t</a>) <span class="keyword">&#8209;&gt;</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-map"><a href="#val-map" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>map : (<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span>) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</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-filter_map"><a href="#val-filter_map" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>filter_map : (<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> option) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</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-iter"><a href="#val-iter" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>iter : (<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> unit) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> unit</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 : (<span class="type-var">'b</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span>) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span></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">&#8209;&gt;</span> <span class="type-var">'a</span> list</code></div><div class="doc"></div></div></body></html>

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,7 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Traverse (containers.data.CCGraph.Traverse)</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> &mdash; <span class="package">package <a href="../../index.html">containers.data</a></span></nav><header><h1><span class="keyword">Module</span> <span class="module-path">CCGraph.Traverse</span></h1></header><div class="spec type" id="type-path"><a href="#type-path" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>('v, 'e) path</code><code><span class="keyword"> = </span>(<span class="type-var">'v</span><span class="keyword"> * </span><span class="type-var">'e</span><span class="keyword"> * </span><span class="type-var">'v</span>) list</code><code></code></div><div class="doc"></div></div><div class="spec val" id="val-generic"><a href="#val-generic" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>generic : tbl:<span class="type-var">'v</span> <a href="../index.html#type-set">set</a> <span class="keyword">&#8209;&gt;</span> bag:<span class="type-var">'v</span> <a href="../index.html#type-bag">bag</a> <span class="keyword">&#8209;&gt;</span> graph:(<span class="type-var">'v</span>, <span class="type-var">'e</span>) <a href="../index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'v</span> <a href="../index.html#type-sequence">sequence</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'v</span> <a href="../index.html#type-sequence_once">sequence_once</a></code></div><div class="doc"><p>Traversal of the given graph, starting from a sequence
of vertices, using the given bag to choose the next vertex to
explore. Each vertex is visited at most once.</p></div></div><div class="spec val" id="val-generic_tag"><a href="#val-generic_tag" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>generic_tag : tags:<span class="type-var">'v</span> <a href="../index.html#type-tag_set">tag_set</a> <span class="keyword">&#8209;&gt;</span> bag:<span class="type-var">'v</span> <a href="../index.html#type-bag">bag</a> <span class="keyword">&#8209;&gt;</span> graph:(<span class="type-var">'v</span>, <span class="type-var">'e</span>) <a href="../index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'v</span> <a href="../index.html#type-sequence">sequence</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'v</span> <a href="../index.html#type-sequence_once">sequence_once</a></code></div><div class="doc"><p>One-shot traversal of the graph using a tag set and the given bag.</p></div></div><div class="spec val" id="val-dfs"><a href="#val-dfs" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>dfs : tbl:<span class="type-var">'v</span> <a href="../index.html#type-set">set</a> <span class="keyword">&#8209;&gt;</span> graph:(<span class="type-var">'v</span>, <span class="type-var">'e</span>) <a href="../index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'v</span> <a href="../index.html#type-sequence">sequence</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'v</span> <a href="../index.html#type-sequence_once">sequence_once</a></code></div><div class="doc"></div></div><div class="spec val" id="val-dfs_tag"><a href="#val-dfs_tag" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>dfs_tag : tags:<span class="type-var">'v</span> <a href="../index.html#type-tag_set">tag_set</a> <span class="keyword">&#8209;&gt;</span> graph:(<span class="type-var">'v</span>, <span class="type-var">'e</span>) <a href="../index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'v</span> <a href="../index.html#type-sequence">sequence</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'v</span> <a href="../index.html#type-sequence_once">sequence_once</a></code></div><div class="doc"></div></div><div class="spec val" id="val-bfs"><a href="#val-bfs" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>bfs : tbl:<span class="type-var">'v</span> <a href="../index.html#type-set">set</a> <span class="keyword">&#8209;&gt;</span> graph:(<span class="type-var">'v</span>, <span class="type-var">'e</span>) <a href="../index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'v</span> <a href="../index.html#type-sequence">sequence</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'v</span> <a href="../index.html#type-sequence_once">sequence_once</a></code></div><div class="doc"></div></div><div class="spec val" id="val-bfs_tag"><a href="#val-bfs_tag" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>bfs_tag : tags:<span class="type-var">'v</span> <a href="../index.html#type-tag_set">tag_set</a> <span class="keyword">&#8209;&gt;</span> graph:(<span class="type-var">'v</span>, <span class="type-var">'e</span>) <a href="../index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'v</span> <a href="../index.html#type-sequence">sequence</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'v</span> <a href="../index.html#type-sequence_once">sequence_once</a></code></div><div class="doc"></div></div><div class="spec val" id="val-dijkstra"><a href="#val-dijkstra" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>dijkstra : tbl:<span class="type-var">'v</span> <a href="../index.html#type-set">set</a> <span class="keyword">&#8209;&gt;</span> ?&#8288;dist:(<span class="type-var">'e</span> <span class="keyword">&#8209;&gt;</span> int) <span class="keyword">&#8209;&gt;</span> graph:(<span class="type-var">'v</span>, <span class="type-var">'e</span>) <a href="../index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'v</span> <a href="../index.html#type-sequence">sequence</a> <span class="keyword">&#8209;&gt;</span> (<span class="type-var">'v</span><span class="keyword"> * </span>int<span class="keyword"> * </span>(<span class="type-var">'v</span>, <span class="type-var">'e</span>) <a href="index.html#type-path">path</a>) <a href="../index.html#type-sequence_once">sequence_once</a></code></div><div class="doc"><p>Dijkstra algorithm, traverses a graph in increasing distance order.
Yields each vertex paired with its distance to the set of initial vertices
(the smallest distance needed to reach the node from the initial vertices).</p><ul class="at-tag"><li><span class="at-tag parameter">Parameter</span> <span class="module-path">dist</span>: distance from origin of the edge to destination,
must be strictly positive. Default is 1 for every edge.</li></ul></div></div><div class="spec val" id="val-dijkstra_tag"><a href="#val-dijkstra_tag" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>dijkstra_tag : ?&#8288;dist:(<span class="type-var">'e</span> <span class="keyword">&#8209;&gt;</span> int) <span class="keyword">&#8209;&gt;</span> tags:<span class="type-var">'v</span> <a href="../index.html#type-tag_set">tag_set</a> <span class="keyword">&#8209;&gt;</span> graph:(<span class="type-var">'v</span>, <span class="type-var">'e</span>) <a href="../index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'v</span> <a href="../index.html#type-sequence">sequence</a> <span class="keyword">&#8209;&gt;</span> (<span class="type-var">'v</span><span class="keyword"> * </span>int<span class="keyword"> * </span>(<span class="type-var">'v</span>, <span class="type-var">'e</span>) <a href="index.html#type-path">path</a>) <a href="../index.html#type-sequence_once">sequence_once</a></code></div><div class="doc"></div></div><div class="spec module" id="module-Event"><a href="#module-Event" class="anchor"></a><div class="def module"><code><span class="keyword">module </span><a href="Event/index.html">Event</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="doc"><h3>More detailed interface</h3></div></div></body></html>

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,4 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>MAP (containers.data.CCGraph.MAP)</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> &mdash; <span class="package">package <a href="../../index.html">containers.data</a></span></nav><header><h1><span class="keyword">Module type</span> <span class="module-path">CCGraph.MAP</span></h1></header><div class="spec type" id="type-vertex"><a href="#type-vertex" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>vertex</code><code></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-as_graph"><a href="#val-as_graph" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>as_graph : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> (<a href="index.html#type-vertex">vertex</a>, <span class="type-var">'a</span>) <a href="../index.html#type-graph">graph</a></code></div><div class="doc"><p>Graph view of the map.</p></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-add_edge"><a href="#val-add_edge" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>add_edge : <a href="index.html#type-vertex">vertex</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-vertex">vertex</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</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_edge"><a href="#val-remove_edge" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>remove_edge : <a href="index.html#type-vertex">vertex</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-vertex">vertex</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</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-add"><a href="#val-add" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>add : <a href="index.html#type-vertex">vertex</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Add a vertex, possibly with no outgoing edge.</p></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-vertex">vertex</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Remove the vertex and all its outgoing edges.
Edges that point to the vertex are <b>NOT</b> removed, they must be
manually removed with <a href="index.html#val-remove_edge">remove_edge</a>.</p></div></div><div class="spec val" id="val-union"><a href="#val-union" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>union : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</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-vertices"><a href="#val-vertices" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>vertices : <span class="type-var">_</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-vertex">vertex</a> <a href="../index.html#type-sequence">sequence</a></code></div><div class="doc"></div></div><div class="spec val" id="val-vertices_l"><a href="#val-vertices_l" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>vertices_l : <span class="type-var">_</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-vertex">vertex</a> list</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-vertex">vertex</a><span class="keyword"> * </span><span class="type-var">'a</span><span class="keyword"> * </span><a href="index.html#type-vertex">vertex</a>) list <span class="keyword">&#8209;&gt;</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-add_list"><a href="#val-add_list" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>add_list : (<a href="index.html#type-vertex">vertex</a><span class="keyword"> * </span><span class="type-var">'a</span><span class="keyword"> * </span><a href="index.html#type-vertex">vertex</a>) list <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</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">&#8209;&gt;</span> (<a href="index.html#type-vertex">vertex</a><span class="keyword"> * </span><span class="type-var">'a</span><span class="keyword"> * </span><a href="index.html#type-vertex">vertex</a>) list</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-vertex">vertex</a><span class="keyword"> * </span><span class="type-var">'a</span><span class="keyword"> * </span><a href="index.html#type-vertex">vertex</a>) <a href="../index.html#type-sequence">sequence</a> <span class="keyword">&#8209;&gt;</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-add_seq"><a href="#val-add_seq" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>add_seq : (<a href="index.html#type-vertex">vertex</a><span class="keyword"> * </span><span class="type-var">'a</span><span class="keyword"> * </span><a href="index.html#type-vertex">vertex</a>) <a href="../index.html#type-sequence">sequence</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</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">&#8209;&gt;</span> (<a href="index.html#type-vertex">vertex</a><span class="keyword"> * </span><span class="type-var">'a</span><span class="keyword"> * </span><a href="index.html#type-vertex">vertex</a>) <a href="../index.html#type-sequence">sequence</a></code></div><div class="doc"></div></div></body></html>

Binary file not shown.

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>1-E (containers.data.CCHashSet.Make.1-E)</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> &mdash; <span class="package">package <a href="../../../index.html">containers.data</a></span></nav><header><h1><span class="keyword">Parameter</span> <span class="module-path">CCHashSet.Make.1-E</span></h1></header><div class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>t</code><code></code><code></code></div><div class="doc"></div></div><div class="spec val" id="val-equal"><a href="#val-equal" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>equal : <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> bool</code></div><div class="doc"></div></div><div class="spec val" id="val-hash"><a href="#val-hash" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>hash : <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> int</code></div><div class="doc"><p>Positive value</p></div></div></body></html>

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>CCHashSet (containers.data.CCHashSet)</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> &mdash; <span class="package">package <a href="../index.html">containers.data</a></span></nav><header><h1><span class="keyword">Module</span> <span class="module-path">CCHashSet</span></h1></header><h2>Mutable Set</h2><p><b>status: unstable</b></p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.13</li></ul><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">&#8209;&gt;</span> unit) <span class="keyword">&#8209;&gt;</span> unit</code><code></code></div><div class="doc"></div></div><div class="spec type" id="type-printer"><a href="#type-printer" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>'a printer</code><code><span class="keyword"> = </span>Format.formatter <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> unit</code><code></code></div><div class="doc"></div></div><div class="spec module-type" id="module-type-S"><a href="#module-type-S" class="anchor"></a><div class="def module-type"><code><span class="keyword">module type </span><a href="module-type-S/index.html">S</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="doc"></div></div><div class="spec module-type" id="module-type-ELEMENT"><a href="#module-type-ELEMENT" class="anchor"></a><div class="def module-type"><code><span class="keyword">module type </span><a href="module-type-ELEMENT/index.html">ELEMENT</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="doc"></div></div><div class="spec module" id="module-Make"><a href="#module-Make" class="anchor"></a><div class="def module"><code><span class="keyword">module </span><a href="Make/index.html">Make</a> : <span class="keyword">functor</span> (<a href="Make/argument-1-E/index.html">E</a> : <a href="index.html#module-type-ELEMENT">ELEMENT</a>) -&gt; <a href="index.html#module-type-S">S</a><span class="keyword"> with </span><span class="keyword">type </span><a href="Make/index.html#type-elt">elt</a><span class="keyword"> = </span><a href="Make/argument-1-E/index.html#type-t">E.t</a></code></div><div class="doc"></div></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>ELEMENT (containers.data.CCHashSet.ELEMENT)</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> &mdash; <span class="package">package <a href="../../index.html">containers.data</a></span></nav><header><h1><span class="keyword">Module type</span> <span class="module-path">CCHashSet.ELEMENT</span></h1></header><div class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>t</code><code></code><code></code></div><div class="doc"></div></div><div class="spec val" id="val-equal"><a href="#val-equal" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>equal : <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> bool</code></div><div class="doc"></div></div><div class="spec val" id="val-hash"><a href="#val-hash" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>hash : <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> int</code></div><div class="doc"><p>Positive value</p></div></div></body></html>

File diff suppressed because one or more lines are too long

Binary file not shown.

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>1-K (containers.data.CCHashTrie.Make.1-K)</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> &mdash; <span class="package">package <a href="../../../index.html">containers.data</a></span></nav><header><h1><span class="keyword">Parameter</span> <span class="module-path">CCHashTrie.Make.1-K</span></h1></header><div class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>t</code><code></code><code></code></div><div class="doc"></div></div><div class="spec val" id="val-equal"><a href="#val-equal" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>equal : <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> bool</code></div><div class="doc"></div></div><div class="spec val" id="val-hash"><a href="#val-hash" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>hash : <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> int</code></div><div class="doc"></div></div></body></html>

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,7 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Transient (containers.data.CCHashTrie.Transient)</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> &mdash; <span class="package">package <a href="../../index.html">containers.data</a></span></nav><header><h1><span class="keyword">Module</span> <span class="module-path">CCHashTrie.Transient</span></h1></header><div class="doc"><h3>Transient Identifiers</h3></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>t</code><code></code><code></code></div><div class="doc"><p>Identifiers for transient modifications. A transient modification
is uniquely identified by a <code class="code">Transient.t</code>. Once <code class="code">Transient.freeze r</code>
is called, <code class="code">r</code> cannot be used to modify the structure again.</p></div></div><div class="spec val" id="val-create"><a href="#val-create" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>create : unit <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Create a new, active ID.</p></div></div><div class="spec val" id="val-equal"><a href="#val-equal" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>equal : <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> bool</code></div><div class="doc"><p>Equality between IDs.</p></div></div><div class="spec val" id="val-frozen"><a href="#val-frozen" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>frozen : <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> bool</code></div><div class="doc"><p><code class="code">frozen i</code> returns <code class="code">true</code> if <code class="code">freeze i</code> was called before. In this case,
the ID cannot be used for modifications again.</p></div></div><div class="spec val" id="val-active"><a href="#val-active" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>active : <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> bool</code></div><div class="doc"><p><code class="code">active i</code> is <code class="code">not (frozen i)</code>.</p></div></div><div class="spec val" id="val-freeze"><a href="#val-freeze" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>freeze : <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> unit</code></div><div class="doc"><p><code class="code">freeze i</code> makes <code class="code">i</code> unusable for new modifications. The values
created with <code class="code">i</code> will now be immutable.</p></div></div><div class="spec val" id="val-with_"><a href="#val-with_" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>with_ : (<a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span>) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span></code></div><div class="doc"><p><code class="code">with_ f</code> creates a transient ID <code class="code">i</code>, calls <code class="code">f i</code>,
freezes the ID <code class="code">i</code> and returns the result of <code class="code">f i</code>.</p></div></div><div class="spec exception" id="exception-Frozen"><a href="#exception-Frozen" class="anchor"></a><div class="def exception"><code><span class="keyword">exception </span></code><code><span class="exception">Frozen</span></code></div><div class="doc"><p>Raised when a frozen ID is used.</p></div></div></body></html>

View file

@ -0,0 +1,6 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>CCHashTrie (containers.data.CCHashTrie)</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> &mdash; <span class="package">package <a href="../index.html">containers.data</a></span></nav><header><h1><span class="keyword">Module</span> <span class="module-path">CCHashTrie</span></h1></header><h2>Hash Tries</h2><p>Trie indexed by the hash of the keys, where the branching factor is fixed.
The goal is to have a quite efficient functional structure with fast
update and access <b>if</b> the hash function is good.
The trie is not binary, to improve cache locality and decrease depth.</p><p>Preliminary benchmarks (see the &quot;tbl&quot; section of benchmarks) tend to show
that this type is quite efficient for small data sets.</p><p><b>status: unstable</b></p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.13</li></ul><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">&#8209;&gt;</span> unit) <span class="keyword">&#8209;&gt;</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">&#8209;&gt;</span> <span class="type-var">'a</span> option</code><code></code></div><div class="doc"></div></div><div class="spec type" id="type-printer"><a href="#type-printer" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>'a printer</code><code><span class="keyword"> = </span>Format.formatter <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> unit</code><code></code></div><div class="doc"></div></div><div class="spec type" id="type-ktree"><a href="#type-ktree" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>'a ktree</code><code><span class="keyword"> = </span>unit <span class="keyword">&#8209;&gt;</span> [ `Nil | `Node of <span class="type-var">'a</span><span class="keyword"> * </span><span class="type-var">'a</span> <a href="index.html#type-ktree">ktree</a> list ]</code><code></code></div><div class="doc"></div></div><div class="spec module" id="module-Transient"><a href="#module-Transient" class="anchor"></a><div class="def module"><code><span class="keyword">module </span><a href="Transient/index.html">Transient</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="doc"><h3>Transient Identifiers</h3></div></div><div class="spec module-type" id="module-type-S"><a href="#module-type-S" class="anchor"></a><div class="def module-type"><code><span class="keyword">module type </span><a href="module-type-S/index.html">S</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="doc"><h3>Signature</h3></div></div><div class="spec module-type" id="module-type-KEY"><a href="#module-type-KEY" class="anchor"></a><div class="def module-type"><code><span class="keyword">module type </span><a href="module-type-KEY/index.html">KEY</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="doc"><h3>Type for keys</h3></div></div><div class="spec module" id="module-Make"><a href="#module-Make" class="anchor"></a><div class="def module"><code><span class="keyword">module </span><a href="Make/index.html">Make</a> : <span class="keyword">functor</span> (<a href="Make/argument-1-K/index.html">K</a> : <a href="index.html#module-type-KEY">KEY</a>) -&gt; <a href="index.html#module-type-S">S</a><span class="keyword"> with </span><span class="keyword">type </span><a href="Make/index.html#type-key">key</a><span class="keyword"> = </span><a href="Make/argument-1-K/index.html#type-t">K.t</a></code></div><div class="doc"><h3>Functors</h3></div></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>KEY (containers.data.CCHashTrie.KEY)</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> &mdash; <span class="package">package <a href="../../index.html">containers.data</a></span></nav><header><h1><span class="keyword">Module type</span> <span class="module-path">CCHashTrie.KEY</span></h1></header><div class="doc"><h3>Type for keys</h3></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>t</code><code></code><code></code></div><div class="doc"></div></div><div class="spec val" id="val-equal"><a href="#val-equal" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>equal : <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> bool</code></div><div class="doc"></div></div><div class="spec val" id="val-hash"><a href="#val-hash" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>hash : <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> int</code></div><div class="doc"></div></div></body></html>

File diff suppressed because one or more lines are too long

Binary file not shown.

View file

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Key (containers.data.CCHet.Key)</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> &mdash; <span class="package">package <a href="../../index.html">containers.data</a></span></nav><header><h1><span class="keyword">Module</span> <span class="module-path">CCHet.Key</span></h1></header><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-create"><a href="#val-create" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>create : unit <span class="keyword">&#8209;&gt;</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-equal"><a href="#val-equal" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>equal : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> bool</code></div><div class="doc"><p>Compare two keys that have compatible types.</p></div></div></body></html>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,3 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>CCHet (containers.data.CCHet)</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> &mdash; <span class="package">package <a href="../index.html">containers.data</a></span></nav><header><h1><span class="keyword">Module</span> <span class="module-path">CCHet</span></h1></header><h2>Associative containers with Heterogeneous Values</h2><p>This is similar to <a href="../CCMixtbl/index.html">CCMixtbl</a>, but the injection is directly used as
a key.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.17</li></ul><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">&#8209;&gt;</span> unit) <span class="keyword">&#8209;&gt;</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">&#8209;&gt;</span> <span class="type-var">'a</span> option</code><code></code></div><div class="doc"></div></div><div class="spec module" id="module-Key"><a href="#module-Key" class="anchor"></a><div class="def module"><code><span class="keyword">module </span><a href="Key/index.html">Key</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="doc"></div></div><div class="spec type" id="type-pair"><a href="#type-pair" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>pair</code><code></code><code><span class="keyword"> = </span></code><table class="variant"><tr id="type-pair.Pair" class="anchored"><td class="def constructor"><a href="#type-pair.Pair" class="anchor"></a><code><span class="keyword">| </span></code><code><span class="constructor">Pair</span><span class="keyword"> : </span><span class="type-var">'a</span> <a href="Key/index.html#type-t">Key.t</a><span class="keyword"> * </span><span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-pair">pair</a></code></td></tr></table><code></code></div><div class="doc"></div></div><div class="spec module" id="module-Tbl"><a href="#module-Tbl" class="anchor"></a><div class="def module"><code><span class="keyword">module </span><a href="Tbl/index.html">Tbl</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="doc"><h3>Imperative table indexed by <a href="Key/index.html">Key</a></h3></div></div><div class="spec module" id="module-Map"><a href="#module-Map" class="anchor"></a><div class="def module"><code><span class="keyword">module </span><a href="Map/index.html">Map</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="doc"><h3>Immutable map</h3></div></div></body></html>

Binary file not shown.

File diff suppressed because one or more lines are too long

Binary file not shown.

File diff suppressed because one or more lines are too long

Binary file not shown.

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>1-X (containers.data.CCMixmap.Make.1-X)</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> &mdash; <span class="package">package <a href="../../../index.html">containers.data</a></span></nav><header><h1><span class="keyword">Parameter</span> <span class="module-path">CCMixmap.Make.1-X</span></h1></header><div class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>t</code><code></code><code></code></div><div class="doc"></div></div><div class="spec val" id="val-compare"><a href="#val-compare" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>compare : <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> int</code></div><div class="doc"></div></div></body></html>

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,25 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>CCMixmap (containers.data.CCMixmap)</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> &mdash; <span class="package">package <a href="../index.html">containers.data</a></span></nav><header><h1><span class="keyword">Module</span> <span class="module-path">CCMixmap</span></h1></header><h2>Maps with Heterogeneous Values</h2><p><b>status: experimental</b></p><pre><code class="code"> module M = CCMixmap.Make(CCInt)
let inj_int = CCMixmap.create_inj()
let inj_str = CCMixmap.create_inj()
let inj_list_int = CCMixmap.create_inj()
let m =
M.empty
|&gt; M.add ~inj:inj_int 1 1
|&gt; M.add ~inj:inj_str 2 &quot;2&quot;
|&gt; M.add ~inj:inj_list_int 3 [3;3;3]
assert (M.get ~inj:inj_int 1 m = Some 1)
assert (M.get ~inj:inj_str 1 m = None)
assert (M.get ~inj:inj_str 2 m = Some &quot;2&quot;)
assert (M.get ~inj:inj_int 2 m = None)
assert (M.get ~inj:inj_list_int 3 m = Some [3;3;3])
assert (M.get ~inj:inj_str 3 m = None)</code></pre><p>change of API, the map is last argument to make piping with <code class="code">|&gt;</code> easier since 0.16.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.9</li></ul><div class="spec type" id="type-injection"><a href="#type-injection" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>'a injection</code><code></code><code></code></div><div class="doc"><p>An accessor for values of type 'a in any map. Values put
in the map using a key can only be retrieved using this
very same key.</p></div></div><div class="spec val" id="val-create_inj"><a href="#val-create_inj" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>create_inj : unit <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-injection">injection</a></code></div><div class="doc"><p>Return a value that works for a given type of values. This function is
normally called once for each type of value. Several keys may be
created for the same type, but a value set with a given setter can only be
retrieved with the matching getter. The same key can be reused
across multiple maps (although not in a thread-safe way).</p></div></div><div class="spec module-type" id="module-type-S"><a href="#module-type-S" class="anchor"></a><div class="def module-type"><code><span class="keyword">module type </span><a href="module-type-S/index.html">S</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="doc"></div></div><div class="spec module-type" id="module-type-ORD"><a href="#module-type-ORD" class="anchor"></a><div class="def module-type"><code><span class="keyword">module type </span><a href="module-type-ORD/index.html">ORD</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="doc"></div></div><div class="spec module" id="module-Make"><a href="#module-Make" class="anchor"></a><div class="def module"><code><span class="keyword">module </span><a href="Make/index.html">Make</a> : <span class="keyword">functor</span> (<a href="Make/argument-1-X/index.html">X</a> : <a href="index.html#module-type-ORD">ORD</a>) -&gt; <a href="index.html#module-type-S">S</a><span class="keyword"> with </span><span class="keyword">type </span><a href="Make/index.html#type-key">key</a><span class="keyword"> = </span><a href="Make/argument-1-X/index.html#type-t">X.t</a></code></div><div class="doc"></div></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>ORD (containers.data.CCMixmap.ORD)</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> &mdash; <span class="package">package <a href="../../index.html">containers.data</a></span></nav><header><h1><span class="keyword">Module type</span> <span class="module-path">CCMixmap.ORD</span></h1></header><div class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>t</code><code></code><code></code></div><div class="doc"></div></div><div class="spec val" id="val-compare"><a href="#val-compare" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>compare : <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> int</code></div><div class="doc"></div></div></body></html>

File diff suppressed because one or more lines are too long

Binary file not shown.

View file

@ -0,0 +1,17 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>CCMixset (containers.data.CCMixset)</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> &mdash; <span class="package">package <a href="../index.html">containers.data</a></span></nav><header><h1><span class="keyword">Module</span> <span class="module-path">CCMixset</span></h1></header><h2>Set of Heterogeneous Values</h2><pre><code class="code"> let k1 : int key = newkey () in
let k2 : int key = newkey () in
let k3 : string key = newkey () in
let set =
empty
|&gt; set ~key:k1 1
|&gt; set ~key:k2 2
|&gt; set ~key:k3 &quot;3&quot;
in
assert (get ~key:k1 set = Some 1);
assert (get ~key:k2 set = Some 2);
assert (get ~key:k3 set = Some &quot;3&quot;);
()</code></pre><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.11</li></ul><div class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>t</code><code></code><code></code></div><div class="doc"><p>A set of values of heterogeneous types</p></div></div><div class="spec type" id="type-key"><a href="#type-key" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>'a key</code><code></code><code></code></div><div class="doc"><p>A unique &quot;key&quot; to access a value of type <code class="code">'a</code> in a <code class="code">set</code></p></div></div><div class="spec val" id="val-newkey"><a href="#val-newkey" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>newkey : unit <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-key">key</a></code></div><div class="doc"><p><code class="code">newkey ()</code> creates a new unique key that can be used to access
a <code class="code">'a</code> value in a set. Each key created with <code class="code">newkey</code> is distinct
from any other key, even if they have the same type.</p><p>Not thread-safe.</p></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 : <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Empty set.</p></div></div><div class="spec val" id="val-set"><a href="#val-set" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>set : key:<span class="type-var">'a</span> <a href="index.html#type-key">key</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p><code class="code">set ~key v set</code> maps <code class="code">key</code> to <code class="code">v</code> in <code class="code">set</code>. It means that
for every <code class="code">set</code>, <code class="code">get ~key (set ~key v set) = Some v</code>.</p></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 : key:<span class="type-var">'a</span> <a href="index.html#type-key">key</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> option</code></div><div class="doc"><p><code class="code">get ~key set</code> obtains the value for <code class="code">key</code> in <code class="code">set</code>, if any.</p></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 : key:<span class="type-var">'a</span> <a href="index.html#type-key">key</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span></code></div><div class="doc"><p>Same as <a href="index.html#val-get">get</a>, but can fail.</p><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-cardinal"><a href="#val-cardinal" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>cardinal : <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> int</code></div><div class="doc"><p>Number of mappings.</p></div></div></body></html>

Binary file not shown.

File diff suppressed because one or more lines are too long

Binary file not shown.

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>1-K (containers.data.CCMultiMap.Make.1-K)</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> &mdash; <span class="package">package <a href="../../../index.html">containers.data</a></span></nav><header><h1><span class="keyword">Parameter</span> <span class="module-path">CCMultiMap.Make.1-K</span></h1></header><div class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>t</code><code></code><code></code></div><div class="doc"></div></div><div class="spec val" id="val-compare"><a href="#val-compare" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>compare : <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> int</code></div><div class="doc"></div></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>2-V (containers.data.CCMultiMap.Make.2-V)</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> &mdash; <span class="package">package <a href="../../../index.html">containers.data</a></span></nav><header><h1><span class="keyword">Parameter</span> <span class="module-path">CCMultiMap.Make.2-V</span></h1></header><div class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>t</code><code></code><code></code></div><div class="doc"></div></div><div class="spec val" id="val-compare"><a href="#val-compare" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>compare : <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> int</code></div><div class="doc"></div></div></body></html>

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>1-L (containers.data.CCMultiMap.MakeBidir.1-L)</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> &mdash; <span class="package">package <a href="../../../index.html">containers.data</a></span></nav><header><h1><span class="keyword">Parameter</span> <span class="module-path">CCMultiMap.MakeBidir.1-L</span></h1></header><div class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>t</code><code></code><code></code></div><div class="doc"></div></div><div class="spec val" id="val-compare"><a href="#val-compare" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>compare : <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> int</code></div><div class="doc"></div></div></body></html>

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>2-R (containers.data.CCMultiMap.MakeBidir.2-R)</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> &mdash; <span class="package">package <a href="../../../index.html">containers.data</a></span></nav><header><h1><span class="keyword">Parameter</span> <span class="module-path">CCMultiMap.MakeBidir.2-R</span></h1></header><div class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>t</code><code></code><code></code></div><div class="doc"></div></div><div class="spec val" id="val-compare"><a href="#val-compare" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>compare : <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> int</code></div><div class="doc"></div></div></body></html>

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,4 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>CCMultiMap (containers.data.CCMultiMap)</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> &mdash; <span class="package">package <a href="../index.html">containers.data</a></span></nav><header><h1><span class="keyword">Module</span> <span class="module-path">CCMultiMap</span></h1></header><h2>Multimap</h2><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">&#8209;&gt;</span> unit) <span class="keyword">&#8209;&gt;</span> unit</code><code></code></div><div class="doc"></div></div><div class="spec module-type" id="module-type-S"><a href="#module-type-S" class="anchor"></a><div class="def module-type"><code><span class="keyword">module type </span><a href="module-type-S/index.html">S</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="doc"></div></div><div class="spec module-type" id="module-type-OrderedType"><a href="#module-type-OrderedType" class="anchor"></a><div class="def module-type"><code><span class="keyword">module type </span><a href="module-type-OrderedType/index.html">OrderedType</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="doc"></div></div><div class="spec module" id="module-Make"><a href="#module-Make" class="anchor"></a><div class="def module"><code><span class="keyword">module </span><a href="Make/index.html">Make</a> : <span class="keyword">functor</span> (<a href="Make/argument-1-K/index.html">K</a> : <a href="index.html#module-type-OrderedType">OrderedType</a>) -&gt; <span class="keyword">functor</span> (<a href="Make/argument-2-V/index.html">V</a> : <a href="index.html#module-type-OrderedType">OrderedType</a>) -&gt; <a href="index.html#module-type-S">S</a><span class="keyword"> with </span><span class="keyword">type </span><a href="Make/index.html#type-key">key</a><span class="keyword"> = </span><a href="Make/argument-1-K/index.html#type-t">K.t</a><span class="keyword"> and </span><span class="keyword">type </span><a href="Make/index.html#type-value">value</a><span class="keyword"> = </span><a href="Make/argument-2-V/index.html#type-t">V.t</a></code></div><div class="doc"></div></div><h3>Two-Way Multimap</h3><p>
Represents n-to-n mappings between two types. Each element from the &quot;left&quot;
is mapped to several right values, and conversely.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.3.3</li></ul><div class="spec module-type" id="module-type-BIDIR"><a href="#module-type-BIDIR" class="anchor"></a><div class="def module-type"><code><span class="keyword">module type </span><a href="module-type-BIDIR/index.html">BIDIR</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="doc"></div></div><div class="spec module" id="module-MakeBidir"><a href="#module-MakeBidir" class="anchor"></a><div class="def module"><code><span class="keyword">module </span><a href="MakeBidir/index.html">MakeBidir</a> : <span class="keyword">functor</span> (<a href="MakeBidir/argument-1-L/index.html">L</a> : <a href="index.html#module-type-OrderedType">OrderedType</a>) -&gt; <span class="keyword">functor</span> (<a href="MakeBidir/argument-2-R/index.html">R</a> : <a href="index.html#module-type-OrderedType">OrderedType</a>) -&gt; <a href="index.html#module-type-BIDIR">BIDIR</a><span class="keyword"> with </span><span class="keyword">type </span><a href="MakeBidir/index.html#type-left">left</a><span class="keyword"> = </span><a href="MakeBidir/argument-1-L/index.html#type-t">L.t</a><span class="keyword"> and </span><span class="keyword">type </span><a href="MakeBidir/index.html#type-right">right</a><span class="keyword"> = </span><a href="MakeBidir/argument-2-R/index.html#type-t">R.t</a></code></div><div class="doc"></div></div></body></html>

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>OrderedType (containers.data.CCMultiMap.OrderedType)</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> &mdash; <span class="package">package <a href="../../index.html">containers.data</a></span></nav><header><h1><span class="keyword">Module type</span> <span class="module-path">CCMultiMap.OrderedType</span></h1></header><div class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>t</code><code></code><code></code></div><div class="doc"></div></div><div class="spec val" id="val-compare"><a href="#val-compare" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>compare : <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> int</code></div><div class="doc"></div></div></body></html>

File diff suppressed because one or more lines are too long

Binary file not shown.

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,2 @@
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>CCMultiSet (containers.data.CCMultiSet)</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> &mdash; <span class="package">package <a href="../index.html">containers.data</a></span></nav><header><h1><span class="keyword">Module</span> <span class="module-path">CCMultiSet</span></h1></header><h2>Multiset</h2><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">&#8209;&gt;</span> unit) <span class="keyword">&#8209;&gt;</span> unit</code><code></code></div><div class="doc"></div></div><div class="spec module-type" id="module-type-S"><a href="#module-type-S" class="anchor"></a><div class="def module-type"><code><span class="keyword">module type </span><a href="module-type-S/index.html">S</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="doc"></div></div><div class="spec module" id="module-Make"><a href="#module-Make" class="anchor"></a><div class="def module"><code><span class="keyword">module </span><a href="Make/index.html">Make</a> : <span class="keyword">functor</span> (<a href="Make/index.html#argument-1-O">O</a> : Set.OrderedType) -&gt; <a href="index.html#module-type-S">S</a><span class="keyword"> with </span><span class="keyword">type </span><a href="Make/index.html#type-elt">elt</a><span class="keyword"> = </span><a href="Make/index.html#argument-1-O">O</a>.t</code></div><div class="doc"></div></div></body></html>

File diff suppressed because one or more lines are too long

Binary file not shown.

File diff suppressed because one or more lines are too long

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show more