mirror of
https://github.com/c-cube/ocaml-containers.git
synced 2025-12-06 11:15:31 -05:00
67 lines
No EOL
64 KiB
HTML
67 lines
No EOL
64 KiB
HTML
<!DOCTYPE html>
|
|
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>CCArray (containers.CCArray)</title><link rel="stylesheet" href="../../odoc.css"/><meta charset="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><meta name="generator" content="doc-ock-html v1.0.0-1-g1fc9bf0"/></head><body><nav id="top"><a href="../index.html">Up</a> — <span class="package">package <a href="../index.html">containers</a></span></nav><header><h1><span class="keyword">Module</span> <span class="module-path">CCArray</span></h1></header><h2>Array utils</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">‑></span> unit) <span class="keyword">‑></span> unit</code><code></code></div><div class="doc"></div></div><div class="spec type" id="type-klist"><a href="#type-klist" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>'a klist</code><code><span class="keyword"> = </span>unit <span class="keyword">‑></span> [ `Nil | `Cons of <span class="type-var">'a</span><span class="keyword"> * </span><span class="type-var">'a</span> <a href="index.html#type-klist">klist</a> ]</code><code></code></div><div class="doc"></div></div><div class="spec type" id="type-gen"><a href="#type-gen" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>'a gen</code><code><span class="keyword"> = </span>unit <span class="keyword">‑></span> <span class="type-var">'a</span> option</code><code></code></div><div class="doc"></div></div><div class="spec type" id="type-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">‑></span> <span class="type-var">'a</span> <span class="keyword">‑></span> bool</code><code></code></div><div class="doc"></div></div><div class="spec type" id="type-ord"><a href="#type-ord" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>'a ord</code><code><span class="keyword"> = </span><span class="type-var">'a</span> <span class="keyword">‑></span> <span class="type-var">'a</span> <span class="keyword">‑></span> int</code><code></code></div><div class="doc"></div></div><div class="spec type" id="type-random_gen"><a href="#type-random_gen" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>'a random_gen</code><code><span class="keyword"> = </span>Random.State.t <span class="keyword">‑></span> <span class="type-var">'a</span></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">‑></span> <span class="type-var">'a</span> <span class="keyword">‑></span> unit</code><code></code></div><div class="doc"></div></div><h3>Arrays</h3><div class="spec include"><div class="doc"></div><details open="open"><summary><span class="def"><code><span class="keyword">include </span><span class="keyword">module type of </span><span class="keyword">sig</span> ... <span class="keyword">end</span></code></span></summary><div class="spec val" id="val-length"><a href="#val-length" class="anchor"></a><div class="def val"><code><span class="keyword">external </span>length : <span class="type-var">'a</span> array <span class="keyword">‑></span> int = "%array_length" </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">external </span>get : <span class="type-var">'a</span> array <span class="keyword">‑></span> int <span class="keyword">‑></span> <span class="type-var">'a</span> = "%array_safe_get" </code></div><div class="doc"></div></div><div class="spec val" id="val-set"><a href="#val-set" class="anchor"></a><div class="def val"><code><span class="keyword">external </span>set : <span class="type-var">'a</span> array <span class="keyword">‑></span> int <span class="keyword">‑></span> <span class="type-var">'a</span> <span class="keyword">‑></span> unit = "%array_safe_set" </code></div><div class="doc"></div></div><div class="spec val" id="val-make"><a href="#val-make" class="anchor"></a><div class="def val"><code><span class="keyword">external </span>make : int <span class="keyword">‑></span> <span class="type-var">'a</span> <span class="keyword">‑></span> <span class="type-var">'a</span> array = "caml_make_vect" </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">external </span>create : int <span class="keyword">‑></span> <span class="type-var">'a</span> <span class="keyword">‑></span> <span class="type-var">'a</span> array = "caml_make_vect" </code></div><div class="doc"><ul class="at-tag"><li><span class="at-tag deprecated">Deprecated</span> Use Array.make instead.</li></ul></div></div><div class="spec val" id="val-create_float"><a href="#val-create_float" class="anchor"></a><div class="def val"><code><span class="keyword">external </span>create_float : int <span class="keyword">‑></span> float array = "caml_make_float_vect" </code></div><div class="doc"></div></div><div class="spec val" id="val-make_float"><a href="#val-make_float" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>make_float : int <span class="keyword">‑></span> float array</code></div><div class="doc"><ul class="at-tag"><li><span class="at-tag deprecated">Deprecated</span> Use Array.create_float instead.</li></ul></div></div><div class="spec val" id="val-init"><a href="#val-init" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>init : int <span class="keyword">‑></span> (int <span class="keyword">‑></span> <span class="type-var">'a</span>) <span class="keyword">‑></span> <span class="type-var">'a</span> array</code></div><div class="doc"></div></div><div class="spec val" id="val-make_matrix"><a href="#val-make_matrix" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>make_matrix : int <span class="keyword">‑></span> int <span class="keyword">‑></span> <span class="type-var">'a</span> <span class="keyword">‑></span> <span class="type-var">'a</span> array array</code></div><div class="doc"></div></div><div class="spec val" id="val-create_matrix"><a href="#val-create_matrix" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>create_matrix : int <span class="keyword">‑></span> int <span class="keyword">‑></span> <span class="type-var">'a</span> <span class="keyword">‑></span> <span class="type-var">'a</span> array array</code></div><div class="doc"><ul class="at-tag"><li><span class="at-tag deprecated">Deprecated</span> Use Array.make_matrix instead.</li></ul></div></div><div class="spec val" id="val-append"><a href="#val-append" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>append : <span class="type-var">'a</span> array <span class="keyword">‑></span> <span class="type-var">'a</span> array <span class="keyword">‑></span> <span class="type-var">'a</span> array</code></div><div class="doc"></div></div><div class="spec val" id="val-concat"><a href="#val-concat" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>concat : <span class="type-var">'a</span> array list <span class="keyword">‑></span> <span class="type-var">'a</span> array</code></div><div class="doc"></div></div><div class="spec val" id="val-sub"><a href="#val-sub" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>sub : <span class="type-var">'a</span> array <span class="keyword">‑></span> int <span class="keyword">‑></span> int <span class="keyword">‑></span> <span class="type-var">'a</span> array</code></div><div class="doc"></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> array <span class="keyword">‑></span> <span class="type-var">'a</span> array</code></div><div class="doc"></div></div><div class="spec val" id="val-fill"><a href="#val-fill" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>fill : <span class="type-var">'a</span> array <span class="keyword">‑></span> int <span class="keyword">‑></span> int <span class="keyword">‑></span> <span class="type-var">'a</span> <span class="keyword">‑></span> unit</code></div><div class="doc"></div></div><div class="spec val" id="val-blit"><a href="#val-blit" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>blit : <span class="type-var">'a</span> array <span class="keyword">‑></span> int <span class="keyword">‑></span> <span class="type-var">'a</span> array <span class="keyword">‑></span> int <span class="keyword">‑></span> int <span class="keyword">‑></span> unit</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> array <span class="keyword">‑></span> <span class="type-var">'a</span> 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 : <span class="type-var">'a</span> list <span class="keyword">‑></span> <span class="type-var">'a</span> array</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">‑></span> unit) <span class="keyword">‑></span> <span class="type-var">'a</span> array <span class="keyword">‑></span> unit</code></div><div class="doc"></div></div><div class="spec val" id="val-iteri"><a href="#val-iteri" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>iteri : (int <span class="keyword">‑></span> <span class="type-var">'a</span> <span class="keyword">‑></span> unit) <span class="keyword">‑></span> <span class="type-var">'a</span> array <span class="keyword">‑></span> unit</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">‑></span> <span class="type-var">'b</span>) <span class="keyword">‑></span> <span class="type-var">'a</span> array <span class="keyword">‑></span> <span class="type-var">'b</span> array</code></div><div class="doc"></div></div><div class="spec val" id="val-mapi"><a href="#val-mapi" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>mapi : (int <span class="keyword">‑></span> <span class="type-var">'a</span> <span class="keyword">‑></span> <span class="type-var">'b</span>) <span class="keyword">‑></span> <span class="type-var">'a</span> array <span class="keyword">‑></span> <span class="type-var">'b</span> array</code></div><div class="doc"></div></div><div class="spec val" id="val-fold_left"><a href="#val-fold_left" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>fold_left : (<span class="type-var">'a</span> <span class="keyword">‑></span> <span class="type-var">'b</span> <span class="keyword">‑></span> <span class="type-var">'a</span>) <span class="keyword">‑></span> <span class="type-var">'a</span> <span class="keyword">‑></span> <span class="type-var">'b</span> array <span class="keyword">‑></span> <span class="type-var">'a</span></code></div><div class="doc"></div></div><div class="spec val" id="val-fold_right"><a href="#val-fold_right" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>fold_right : (<span class="type-var">'b</span> <span class="keyword">‑></span> <span class="type-var">'a</span> <span class="keyword">‑></span> <span class="type-var">'a</span>) <span class="keyword">‑></span> <span class="type-var">'b</span> array <span class="keyword">‑></span> <span class="type-var">'a</span> <span class="keyword">‑></span> <span class="type-var">'a</span></code></div><div class="doc"></div></div><div class="spec val" id="val-iter2"><a href="#val-iter2" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>iter2 : (<span class="type-var">'a</span> <span class="keyword">‑></span> <span class="type-var">'b</span> <span class="keyword">‑></span> unit) <span class="keyword">‑></span> <span class="type-var">'a</span> array <span class="keyword">‑></span> <span class="type-var">'b</span> array <span class="keyword">‑></span> unit</code></div><div class="doc"></div></div><div class="spec val" id="val-map2"><a href="#val-map2" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>map2 : (<span class="type-var">'a</span> <span class="keyword">‑></span> <span class="type-var">'b</span> <span class="keyword">‑></span> <span class="type-var">'c</span>) <span class="keyword">‑></span> <span class="type-var">'a</span> array <span class="keyword">‑></span> <span class="type-var">'b</span> array <span class="keyword">‑></span> <span class="type-var">'c</span> array</code></div><div class="doc"></div></div><div class="spec val" id="val-for_all"><a href="#val-for_all" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>for_all : (<span class="type-var">'a</span> <span class="keyword">‑></span> bool) <span class="keyword">‑></span> <span class="type-var">'a</span> array <span class="keyword">‑></span> bool</code></div><div class="doc"></div></div><div class="spec val" id="val-exists"><a href="#val-exists" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>exists : (<span class="type-var">'a</span> <span class="keyword">‑></span> bool) <span class="keyword">‑></span> <span class="type-var">'a</span> array <span class="keyword">‑></span> bool</code></div><div class="doc"></div></div><div class="spec val" id="val-mem"><a href="#val-mem" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>mem : <span class="type-var">'a</span> <span class="keyword">‑></span> <span class="type-var">'a</span> array <span class="keyword">‑></span> bool</code></div><div class="doc"></div></div><div class="spec val" id="val-memq"><a href="#val-memq" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>memq : <span class="type-var">'a</span> <span class="keyword">‑></span> <span class="type-var">'a</span> array <span class="keyword">‑></span> bool</code></div><div class="doc"></div></div><div class="spec val" id="val-sort"><a href="#val-sort" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>sort : (<span class="type-var">'a</span> <span class="keyword">‑></span> <span class="type-var">'a</span> <span class="keyword">‑></span> int) <span class="keyword">‑></span> <span class="type-var">'a</span> array <span class="keyword">‑></span> unit</code></div><div class="doc"></div></div><div class="spec val" id="val-stable_sort"><a href="#val-stable_sort" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>stable_sort : (<span class="type-var">'a</span> <span class="keyword">‑></span> <span class="type-var">'a</span> <span class="keyword">‑></span> int) <span class="keyword">‑></span> <span class="type-var">'a</span> array <span class="keyword">‑></span> unit</code></div><div class="doc"></div></div><div class="spec val" id="val-fast_sort"><a href="#val-fast_sort" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>fast_sort : (<span class="type-var">'a</span> <span class="keyword">‑></span> <span class="type-var">'a</span> <span class="keyword">‑></span> int) <span class="keyword">‑></span> <span class="type-var">'a</span> array <span class="keyword">‑></span> unit</code></div><div class="doc"></div></div><div class="spec val" id="val-unsafe_get"><a href="#val-unsafe_get" class="anchor"></a><div class="def val"><code><span class="keyword">external </span>unsafe_get : <span class="type-var">'a</span> array <span class="keyword">‑></span> int <span class="keyword">‑></span> <span class="type-var">'a</span> = "%array_unsafe_get" </code></div><div class="doc"></div></div><div class="spec val" id="val-unsafe_set"><a href="#val-unsafe_set" class="anchor"></a><div class="def val"><code><span class="keyword">external </span>unsafe_set : <span class="type-var">'a</span> array <span class="keyword">‑></span> int <span class="keyword">‑></span> <span class="type-var">'a</span> <span class="keyword">‑></span> unit = "%array_unsafe_set" </code></div><div class="doc"></div></div><div class="spec module" id="module-Floatarray"><a href="#module-Floatarray" class="anchor"></a><div class="def module"><code><span class="keyword">module </span>Floatarray = Array.Floatarray</code></div><div class="doc"></div></div></details></div><div class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>'a t</code><code><span class="keyword"> = </span><span class="type-var">'a</span> array</code><code></code></div><div class="doc"><p>The type for arrays</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"><p><code class="code">empty</code> is the empty array, physically equal to <code class="code">||</code>.</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 : <span class="type-var">'a</span> <a href="index.html#type-equal">equal</a> <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <a href="index.html#type-equal">equal</a></code></div><div class="doc"><p><code class="code">equal eq a1 a2</code> is <code class="code">true</code> if the lengths of <code class="code">a1</code> and <code class="code">a2</code> are the same
|
|
and if their corresponding elements test equal, using <code class="code">eq</code>.</p></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 : <span class="type-var">'a</span> <a href="index.html#type-ord">ord</a> <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <a href="index.html#type-ord">ord</a></code></div><div class="doc"><p><code class="code">compare cmp a1 a2</code> compares arrays <code class="code">a1</code> and <code class="code">a2</code> using the function comparison <code class="code">cmp</code>.</p></div></div><div class="spec val" id="val-swap"><a href="#val-swap" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>swap : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> int <span class="keyword">‑></span> int <span class="keyword">‑></span> unit</code></div><div class="doc"><p><code class="code">swap a i j</code> swaps elements at indices <code class="code">i</code> and <code class="code">j</code>.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 1.4</li></ul></div></div><div class="spec val" id="val-get"><a href="#val-get" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>get : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> int <span class="keyword">‑></span> <span class="type-var">'a</span></code></div><div class="doc"><p><code class="code">get a n</code> returns the element number <code class="code">n</code> of array <code class="code">a</code>.
|
|
The first element has number 0.
|
|
The last element has number <code class="code">length a - 1</code>.
|
|
You can also write <code class="code">a.(n)</code> instead of <code class="code">get a n</code>.</p><p>Raise <code class="code">Invalid_argument "index out of bounds"</code>
|
|
if <code class="code">n</code> is outside the range 0 to <code class="code">(length a - 1)</code>.</p></div></div><div class="spec val" id="val-get_safe"><a href="#val-get_safe" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>get_safe : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> int <span class="keyword">‑></span> <span class="type-var">'a</span> option</code></div><div class="doc"><p><code class="code">get_safe a i</code> returns <code class="code">Some a.(i)</code> if <code class="code">i</code> is a valid index.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.18</li></ul></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 : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> int <span class="keyword">‑></span> <span class="type-var">'a</span> <span class="keyword">‑></span> unit</code></div><div class="doc"><p><code class="code">set a n x</code> modifies array <code class="code">a</code> in place, replacing
|
|
element number <code class="code">n</code> with <code class="code">x</code>.
|
|
You can also write <code class="code">a.(n) <- x</code> instead of <code class="code">set a n x</code>.</p><p>Raise <code class="code">Invalid_argument "index out of bounds"</code>
|
|
if <code class="code">n</code> is outside the range 0 to <code class="code">length a - 1</code>.</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 : <span class="type-var">_</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> int</code></div><div class="doc"><p><code class="code">length a</code> returns the length (number of elements) of the given array <code class="code">a</code>.</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">'a</span> <span class="keyword">‑></span> <span class="type-var">'b</span> <span class="keyword">‑></span> <span class="type-var">'a</span>) <span class="keyword">‑></span> <span class="type-var">'a</span> <span class="keyword">‑></span> <span class="type-var">'b</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'a</span></code></div><div class="doc"><p><code class="code">fold f acc a</code> computes <code class="code">f (... (f (f acc a.(0)) a.(1)) ...) a.(n-1)</code>,
|
|
where <code class="code">n</code> is the length of the array <code class="code">a</code>.</p></div></div><div class="spec val" id="val-foldi"><a href="#val-foldi" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>foldi : (<span class="type-var">'a</span> <span class="keyword">‑></span> int <span class="keyword">‑></span> <span class="type-var">'b</span> <span class="keyword">‑></span> <span class="type-var">'a</span>) <span class="keyword">‑></span> <span class="type-var">'a</span> <span class="keyword">‑></span> <span class="type-var">'b</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'a</span></code></div><div class="doc"><p><code class="code">foldi f acc a</code> is just like <a href="index.html#val-fold">fold</a>, but it also passes in the index
|
|
of each element as the second argument to the folded function <code class="code">f</code>.</p></div></div><div class="spec val" id="val-fold_while"><a href="#val-fold_while" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>fold_while : (<span class="type-var">'a</span> <span class="keyword">‑></span> <span class="type-var">'b</span> <span class="keyword">‑></span> <span class="type-var">'a</span><span class="keyword"> * </span>[ `Stop | `Continue ]) <span class="keyword">‑></span> <span class="type-var">'a</span> <span class="keyword">‑></span> <span class="type-var">'b</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'a</span></code></div><div class="doc"><p><code class="code">fold_while f acc a</code> folds left on array <code class="code">a</code> until a stop condition via <code class="code">('a, `Stop)</code>
|
|
is indicated by the accumulator.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.8</li></ul></div></div><div class="spec val" id="val-fold_map"><a href="#val-fold_map" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>fold_map : (<span class="type-var">'acc</span> <span class="keyword">‑></span> <span class="type-var">'a</span> <span class="keyword">‑></span> <span class="type-var">'acc</span><span class="keyword"> * </span><span class="type-var">'b</span>) <span class="keyword">‑></span> <span class="type-var">'acc</span> <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'acc</span><span class="keyword"> * </span><span class="type-var">'b</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p><code class="code">fold_map f acc a</code> is a <code class="code">fold_left</code>-like function, but it also maps the
|
|
array to another array.</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-scan_left"><a href="#val-scan_left" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>scan_left : (<span class="type-var">'acc</span> <span class="keyword">‑></span> <span class="type-var">'a</span> <span class="keyword">‑></span> <span class="type-var">'acc</span>) <span class="keyword">‑></span> <span class="type-var">'acc</span> <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'acc</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p><code class="code">scan_left f acc a</code> returns the array
|
|
<code class="code"> [|acc; f acc x0; f (f acc a.(0)) a.(1); …|] </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-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">‑></span> unit) <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> unit</code></div><div class="doc"><p><code class="code">iter f a</code> applies function <code class="code">f</code> in turn to all elements of <code class="code">a</code>.
|
|
It is equivalent to <code class="code">f a.(0); f a.(1); ...; f a.(length a - 1); ()</code>.</p></div></div><div class="spec val" id="val-iteri"><a href="#val-iteri" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>iteri : (int <span class="keyword">‑></span> <span class="type-var">'a</span> <span class="keyword">‑></span> unit) <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> unit</code></div><div class="doc"><p><code class="code">iteri f a</code> is like <a href="index.html#val-iter">iter</a>, but the function <code class="code">f</code> is applied with the index of the
|
|
element as first argument, and the element itself as second argument.</p></div></div><div class="spec val" id="val-blit"><a href="#val-blit" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>blit : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> int <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> int <span class="keyword">‑></span> int <span class="keyword">‑></span> unit</code></div><div class="doc"><p><code class="code">blit a1 o1 a2 o2 len</code> copies <code class="code">len</code> elements
|
|
from array <code class="code">a1</code>, starting at element number <code class="code">o1</code>, to array <code class="code">a2</code>,
|
|
starting at element number <code class="code">o2</code>. It works correctly even if
|
|
<code class="code">a1</code> and <code class="code">a2</code> are the same array, and the source and
|
|
destination chunks overlap.</p><p>Raise <code class="code">Invalid_argument "CCArray.blit"</code> if <code class="code">o1</code> and <code class="code">len</code> do not
|
|
designate a valid subarray of <code class="code">a1</code>, or if <code class="code">o2</code> and <code class="code">len</code> do not
|
|
designate a valid subarray of <code class="code">a2</code>.</p></div></div><div class="spec val" id="val-reverse_in_place"><a href="#val-reverse_in_place" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>reverse_in_place : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> unit</code></div><div class="doc"><p><code class="code">reverse_in_place a</code> reverses the array <code class="code">a</code> in place.</p></div></div><div class="spec val" id="val-sorted"><a href="#val-sorted" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>sorted : (<span class="type-var">'a</span> <span class="keyword">‑></span> <span class="type-var">'a</span> <span class="keyword">‑></span> int) <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'a</span> array</code></div><div class="doc"><p><code class="code">sorted cmp a</code> makes a copy of <code class="code">a</code> and sorts it with <code class="code">cmp</code>.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 1.0</li></ul></div></div><div class="spec val" id="val-sort_indices"><a href="#val-sort_indices" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>sort_indices : (<span class="type-var">'a</span> <span class="keyword">‑></span> <span class="type-var">'a</span> <span class="keyword">‑></span> int) <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> int array</code></div><div class="doc"><p><code class="code">sort_indices cmp a</code> returns a new array <code class="code">b</code>, with the same length as <code class="code">a</code>,
|
|
such that <code class="code">b.(i)</code> is the index at which the <code class="code">i</code>-th element of <code class="code">sorted cmp a</code>
|
|
appears in <code class="code">a</code>. <code class="code">a</code> is not modified.</p><p>In other words, <code class="code">map (fun i -> a.(i)) (sort_indices cmp a) = sorted cmp a</code>.
|
|
<code class="code">sort_indices</code> yields the inverse permutation of <a href="index.html#val-sort_ranking">sort_ranking</a>.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 1.0</li></ul></div></div><div class="spec val" id="val-sort_ranking"><a href="#val-sort_ranking" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>sort_ranking : (<span class="type-var">'a</span> <span class="keyword">‑></span> <span class="type-var">'a</span> <span class="keyword">‑></span> int) <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> int array</code></div><div class="doc"><p><code class="code">sort_ranking cmp a</code> returns a new array <code class="code">b</code>, with the same length as <code class="code">a</code>,
|
|
such that <code class="code">b.(i)</code> is the index at which the <code class="code">i</code>-th element of <code class="code">a</code> appears
|
|
in <code class="code">sorted cmp a</code>. <code class="code">a</code> is not modified.</p><p>In other words, <code class="code">map (fun i -> (sorted cmp a).(i)) (sort_ranking cmp a) = a</code>.
|
|
<code class="code">sort_ranking</code> yields the inverse permutation of <a href="index.html#val-sort_indices">sort_indices</a>.</p><p>In the absence of duplicate elements in <code class="code">a</code>, we also have
|
|
<code class="code">lookup_exn a.(i) (sorted a) = (sorted_ranking a).(i)</code>.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 1.0</li></ul></div></div><div class="spec val" id="val-find_map"><a href="#val-find_map" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>find_map : (<span class="type-var">'a</span> <span class="keyword">‑></span> <span class="type-var">'b</span> option) <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'b</span> option</code></div><div class="doc"><p><code class="code">find_map f a</code> returns <code class="code">Some y</code> if there is an element <code class="code">x</code> such
|
|
that <code class="code">f x = Some y</code>. Otherwise returns <code class="code">None</code>.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 1.3</li></ul></div></div><div class="spec val" id="val-find"><a href="#val-find" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>find : (<span class="type-var">'a</span> <span class="keyword">‑></span> <span class="type-var">'b</span> option) <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'b</span> option</code></div><div class="doc"><p><code class="code">find f a</code> is an alias to <a href="index.html#val-find_map">find_map</a>.</p><ul class="at-tag"><li><span class="at-tag deprecated">Deprecated</span> since 1.3, use <a href="index.html#val-find_map">find_map</a> instead.</li></ul></div></div><div class="spec val" id="val-find_map_i"><a href="#val-find_map_i" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>find_map_i : (int <span class="keyword">‑></span> <span class="type-var">'a</span> <span class="keyword">‑></span> <span class="type-var">'b</span> option) <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'b</span> option</code></div><div class="doc"><p><code class="code">find_map_i f a</code> is like <a href="index.html#val-find_map">find_map</a>, but the index of the element is also passed
|
|
to the predicate function <code class="code">f</code>.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 1.3</li></ul></div></div><div class="spec val" id="val-findi"><a href="#val-findi" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>findi : (int <span class="keyword">‑></span> <span class="type-var">'a</span> <span class="keyword">‑></span> <span class="type-var">'b</span> option) <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'b</span> option</code></div><div class="doc"><p><code class="code">findi f a</code> is an alias to <a href="index.html#val-find_map_i">find_map_i</a>.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.3.4</li><li><span class="at-tag deprecated">Deprecated</span> since 1.3, use <a href="index.html#val-find_map_i">find_map_i</a> instead.</li></ul></div></div><div class="spec val" id="val-find_idx"><a href="#val-find_idx" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>find_idx : (<span class="type-var">'a</span> <span class="keyword">‑></span> bool) <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> (int<span class="keyword"> * </span><span class="type-var">'a</span>) option</code></div><div class="doc"><p><code class="code">find_idx p a</code> returns <code class="code">Some (i,x)</code> where <code class="code">x</code> is the <code class="code">i</code>-th element of <code class="code">a</code>,
|
|
and <code class="code">p x</code> holds. Otherwise returns <code class="code">None</code>.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.3.4</li></ul></div></div><div class="spec val" id="val-lookup"><a href="#val-lookup" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>lookup : cmp:<span class="type-var">'a</span> <a href="index.html#type-ord">ord</a> <span class="keyword">‑></span> <span class="type-var">'a</span> <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> int option</code></div><div class="doc"><p><code class="code">lookup cmp x a</code> lookups the index of some key <code class="code">x</code> in a sorted array <code class="code">a</code>.
|
|
Undefined behavior if the array <code class="code">a</code> is not sorted wrt <code class="code">cmp</code>.
|
|
Complexity: <code class="code">O(log (n))</code> (dichotomic search).</p><ul class="at-tag"><li><span class="at-tag return">Returns</span> <code class="code">None</code> if the key <code class="code">x</code> is not present, or
|
|
<code class="code">Some i</code> (<code class="code">i</code> the index of the key) otherwise.</li></ul></div></div><div class="spec val" id="val-lookup_exn"><a href="#val-lookup_exn" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>lookup_exn : cmp:<span class="type-var">'a</span> <a href="index.html#type-ord">ord</a> <span class="keyword">‑></span> <span class="type-var">'a</span> <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> int</code></div><div class="doc"><p><code class="code">lookup_exn cmp x a</code> is like <a href="index.html#val-lookup">lookup</a>, but</p><ul class="at-tag"><li><span class="at-tag raise">Raises</span> <span class="module-path">Not_found</span>: if the key <code class="code">x</code> is not present.</li></ul></div></div><div class="spec val" id="val-bsearch"><a href="#val-bsearch" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>bsearch : cmp:(<span class="type-var">'a</span> <span class="keyword">‑></span> <span class="type-var">'a</span> <span class="keyword">‑></span> int) <span class="keyword">‑></span> <span class="type-var">'a</span> <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> [ `All_lower | `All_bigger | `Just_after of int | `Empty | `At of int ]</code></div><div class="doc"><p><code class="code">bsearch ~cmp x a</code> finds the index of the object <code class="code">x</code> in the array <code class="code">a</code>,
|
|
provided <code class="code">a</code> is <b>sorted</b> using <code class="code">cmp</code>. If the array is not sorted,
|
|
the result is not specified (may raise Invalid_argument).</p><p>Complexity: <code class="code">O(log n)</code> where n is the length of the array <code class="code">a</code>
|
|
(dichotomic search).</p><ul class="at-tag"><li><p><span class="at-tag return">Returns</span> </p><ul><li><code class="code">`At i</code> if <code class="code">cmp a.(i) x = 0</code> (for some i).</li><li><code class="code">`All_lower</code> if all elements of <code class="code">a</code> are lower than <code class="code">x</code>.</li><li><code class="code">`All_bigger</code> if all elements of <code class="code">a</code> are bigger than <code class="code">x</code>.</li><li><code class="code">`Just_after i</code> if <code class="code">a.(i) < x < a.(i+1)</code>.</li><li><code class="code">`Empty</code> if the array <code class="code">a</code> is empty.</li></ul></li><li><span class="at-tag raise">Raises</span> <span class="module-path">Invalid_argument</span>: if the array is found to be unsorted w.r.t <code class="code">cmp</code>.</li><li><span class="at-tag since">Since</span>: 0.13</li></ul></div></div><div class="spec val" id="val-for_all"><a href="#val-for_all" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>for_all : (<span class="type-var">'a</span> <span class="keyword">‑></span> bool) <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> bool</code></div><div class="doc"><p><code class="code">for_all p [|a1; ...; an|]</code> is <code class="code">true</code> if all elements of the array
|
|
satisfy the predicate <code class="code">p</code>. That is, it returns
|
|
<code class="code">(p a1) && (p a2) && ... && (p an)</code>.</p></div></div><div class="spec val" id="val-for_all2"><a href="#val-for_all2" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>for_all2 : (<span class="type-var">'a</span> <span class="keyword">‑></span> <span class="type-var">'b</span> <span class="keyword">‑></span> bool) <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'b</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> bool</code></div><div class="doc"><p><code class="code">for_all2 p [|a1; ...; an|] [|b1; ...; bn|]</code> is <code class="code">true</code> if each pair of elements <code class="code">ai bi</code>
|
|
satisfies the predicate <code class="code">p</code>.
|
|
That is, it returns <code class="code">(p a1 b1) && (p a2 b2) && ... && (p an bn)</code>.</p><ul class="at-tag"><li><span class="at-tag raise">Raises</span> <span class="module-path">Invalid_argument</span>: if arrays have distinct lengths.
|
|
Allow different types.</li><li><span class="at-tag since">Since</span>: 0.20</li></ul></div></div><div class="spec val" id="val-exists"><a href="#val-exists" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>exists : (<span class="type-var">'a</span> <span class="keyword">‑></span> bool) <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> bool</code></div><div class="doc"><p><code class="code">exists p [|a1; ...; an|]</code> is <code class="code">true</code> if at least one element of
|
|
the array satisfies the predicate <code class="code">p</code>. That is, it returns
|
|
<code class="code">(p a1) || (p a2) || ... || (p an)</code>.</p></div></div><div class="spec val" id="val-exists2"><a href="#val-exists2" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>exists2 : (<span class="type-var">'a</span> <span class="keyword">‑></span> <span class="type-var">'b</span> <span class="keyword">‑></span> bool) <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'b</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> bool</code></div><div class="doc"><p><code class="code">exists2 p [|a1; ...; an|] [|b1; ...; bn|]</code> is <code class="code">true</code> if any pair of elements <code class="code">ai bi</code>
|
|
satisfies the predicate <code class="code">p</code>.
|
|
That is, it returns <code class="code">(p a1 b1) || (p a2 b2) || ... || (p an bn)</code>.</p><ul class="at-tag"><li><span class="at-tag raise">Raises</span> <span class="module-path">Invalid_argument</span>: if arrays have distinct lengths.
|
|
Allow different types.</li><li><span class="at-tag since">Since</span>: 0.20</li></ul></div></div><div class="spec val" id="val-fold2"><a href="#val-fold2" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>fold2 : (<span class="type-var">'acc</span> <span class="keyword">‑></span> <span class="type-var">'a</span> <span class="keyword">‑></span> <span class="type-var">'b</span> <span class="keyword">‑></span> <span class="type-var">'acc</span>) <span class="keyword">‑></span> <span class="type-var">'acc</span> <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'b</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'acc</span></code></div><div class="doc"><p><code class="code">fold2 f acc a b</code> fold on two arrays <code class="code">a</code> and <code class="code">b</code> stepwise.
|
|
It computes <code class="code">f (... (f acc a1 b1)...) an bn</code>.</p><ul class="at-tag"><li><span class="at-tag raise">Raises</span> <span class="module-path">Invalid_argument</span>: if arrays have distinct lengths.</li><li><span class="at-tag since">Since</span>: 0.20</li></ul></div></div><div class="spec val" id="val-iter2"><a href="#val-iter2" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>iter2 : (<span class="type-var">'a</span> <span class="keyword">‑></span> <span class="type-var">'b</span> <span class="keyword">‑></span> unit) <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'b</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> unit</code></div><div class="doc"><p><code class="code">iter2 f a b</code> iterates on the two arrays <code class="code">a</code> and <code class="code">b</code> stepwise.
|
|
It is equivalent to <code class="code">f a0 b0; ...; f a.(length a - 1) b.(length b - 1); ()</code>.</p><ul class="at-tag"><li><span class="at-tag raise">Raises</span> <span class="module-path">Invalid_argument</span>: if arrays have distinct lengths.</li><li><span class="at-tag since">Since</span>: 0.20</li></ul></div></div><div class="spec val" id="val-shuffle"><a href="#val-shuffle" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>shuffle : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> unit</code></div><div class="doc"><p><code class="code">shuffle a</code> randomly shuffles the array <code class="code">a</code>, in place.</p></div></div><div class="spec val" id="val-shuffle_with"><a href="#val-shuffle_with" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>shuffle_with : Random.State.t <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> unit</code></div><div class="doc"><p><code class="code">shuffle_with rs a</code> randomly shuffles the array <code class="code">a</code> (like <a href="index.html#val-shuffle">shuffle</a>) but a specialized random
|
|
state <code class="code">rs</code> is used to control the random numbers being produced during shuffling (for reproducibility).</p></div></div><div class="spec val" id="val-random_choose"><a href="#val-random_choose" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>random_choose : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-random_gen">random_gen</a></code></div><div class="doc"><p><code class="code">random_choose a rs</code> randomly chooses an element of <code class="code">a</code>.</p><ul class="at-tag"><li><span class="at-tag raise">Raises</span> <span class="module-path">Not_found</span>: if the array/slice is empty.</li></ul></div></div><div class="spec val" id="val-to_seq"><a href="#val-to_seq" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>to_seq : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-sequence">sequence</a></code></div><div class="doc"><p><code class="code">to_seq a</code> returns a <code class="code">sequence</code> of the elements of an array <code class="code">a</code>.
|
|
The input array <code class="code">a</code> is shared with the sequence and modification of it will result
|
|
in modification of the sequence.</p></div></div><div class="spec val" id="val-to_gen"><a href="#val-to_gen" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>to_gen : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-gen">gen</a></code></div><div class="doc"><p><code class="code">to_gen a</code> returns a <code class="code">gen</code> of the elements of an array <code class="code">a</code>.</p></div></div><div class="spec val" id="val-to_klist"><a href="#val-to_klist" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>to_klist : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-klist">klist</a></code></div><div class="doc"><p><code class="code">to_klist</code> returns a <code class="code">klist</code> of the elements of an array <code class="code">a</code>.</p></div></div><h3>IO</h3><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 : ?⁠sep:string <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-printer">printer</a> <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <a href="index.html#type-printer">printer</a></code></div><div class="doc"><p><code class="code">pp ~sep pp_item ppf a</code> formats the array <code class="code">a</code> on <code class="code">ppf</code>.
|
|
Each element is formatted with <code class="code">pp_item</code> and elements are separated
|
|
by <code class="code">sep</code> (defaults to ", ").</p></div></div><div class="spec val" id="val-pp_i"><a href="#val-pp_i" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>pp_i : ?⁠sep:string <span class="keyword">‑></span> (int <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-printer">printer</a>) <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <a href="index.html#type-printer">printer</a></code></div><div class="doc"><p><code class="code">pp_i ~sep pp_item ppf a</code> prints the array <code class="code">a</code> on <code class="code">ppf</code>.
|
|
The printing function <code class="code">pp_item</code> is giving both index and element.
|
|
Elements are separated by <code class="code">sep</code> (defaults to ", ").</p></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">‑></span> <span class="type-var">'b</span>) <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'b</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p><code class="code">map f a</code> applies function <code class="code">f</code> to all elements of <code class="code">a</code>,
|
|
and builds an array with the results returned by <code class="code">f</code>:
|
|
<code class="code">[| f a.(0); f a.(1); ...; f a.(length a - 1) |]</code>.</p></div></div><div class="spec val" id="val-map2"><a href="#val-map2" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>map2 : (<span class="type-var">'a</span> <span class="keyword">‑></span> <span class="type-var">'b</span> <span class="keyword">‑></span> <span class="type-var">'c</span>) <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'b</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'c</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p><code class="code">map2 f a b</code> applies function <code class="code">f</code> to all elements of <code class="code">a</code> and <code class="code">b</code>,
|
|
and builds an array with the results returned by <code class="code">f</code>:
|
|
<code class="code">[| f a.(0) b.(0); ...; f a.(length a - 1) b.(length b - 1)|]</code>.</p><ul class="at-tag"><li><span class="at-tag raise">Raises</span> <span class="module-path">Invalid_argument</span>: if <code class="code">a</code> and <code class="code">b</code> have distinct lengths.</li><li><span class="at-tag since">Since</span>: 0.20</li></ul></div></div><div class="spec val" id="val-rev"><a href="#val-rev" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>rev : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p><code class="code">rev a</code> copies the array <code class="code">a</code> and reverses it in place.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.20</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 : (<span class="type-var">'a</span> <span class="keyword">‑></span> bool) <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p><code class="code">filter p a</code> filters elements out of the array <code class="code">a</code>. Only the elements satisfying
|
|
the given predicate <code class="code">p</code> will be kept.</p></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">‑></span> <span class="type-var">'b</span> option) <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'b</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p><code class="code">filter_map f [|a1; ...; an|]</code> calls <code class="code">(f a1) ... (f an)</code> and returns an array <code class="code">b</code> consisting
|
|
of all elements <code class="code">bi</code> such as <code class="code">f ai = Some bi</code>. When <code class="code">f</code> returns <code class="code">None</code>, the corresponding
|
|
element of <code class="code">a</code> is discarded.</p></div></div><div class="spec val" id="val-flat_map"><a href="#val-flat_map" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>flat_map : (<span class="type-var">'a</span> <span class="keyword">‑></span> <span class="type-var">'b</span> <a href="index.html#type-t">t</a>) <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'b</span> array</code></div><div class="doc"><p><code class="code">flat_map f a</code> transforms each element of <code class="code">a</code> into an array, then flattens.</p></div></div><div class="spec val" id="val-(>>=)"><a href="#val-(>>=)" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>(>>=) : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> (<span class="type-var">'a</span> <span class="keyword">‑></span> <span class="type-var">'b</span> <a href="index.html#type-t">t</a>) <span class="keyword">‑></span> <span class="type-var">'b</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p><code class="code">a >>= f</code> is the infix version of <a href="index.html#val-flat_map">flat_map</a>.</p></div></div><div class="spec val" id="val-(>>|)"><a href="#val-(>>|)" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>(>>|) : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> (<span class="type-var">'a</span> <span class="keyword">‑></span> <span class="type-var">'b</span>) <span class="keyword">‑></span> <span class="type-var">'b</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p><code class="code">a >>| f</code> is the infix version of <a href="index.html#val-map">map</a>.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.8</li></ul></div></div><div class="spec val" id="val-(>|=)"><a href="#val-(>|=)" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>(>|=) : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> (<span class="type-var">'a</span> <span class="keyword">‑></span> <span class="type-var">'b</span>) <span class="keyword">‑></span> <span class="type-var">'b</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p><code class="code">a >|= f</code> is the infix version of <a href="index.html#val-map">map</a>.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.8</li></ul></div></div><div class="spec val" id="val-except_idx"><a href="#val-except_idx" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>except_idx : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> int <span class="keyword">‑></span> <span class="type-var">'a</span> list</code></div><div class="doc"><p><code class="code">except_idx a i</code> removes the element of <code class="code">a</code> at given index <code class="code">i</code>, and returns
|
|
the list of the other elements.</p></div></div><div class="spec val" id="val-(--)"><a href="#val-(--)" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>(--) : int <span class="keyword">‑></span> int <span class="keyword">‑></span> int <a href="index.html#type-t">t</a></code></div><div class="doc"><p><code class="code">x -- y</code> creates an array containing integers in the range <code class="code">x .. y</code>. Bounds included.</p></div></div><div class="spec val" id="val-(--^)"><a href="#val-(--^)" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>(--^) : int <span class="keyword">‑></span> int <span class="keyword">‑></span> int <a href="index.html#type-t">t</a></code></div><div class="doc"><p><code class="code">x --^ y</code> creates an array containing integers in the range <code class="code">x .. y</code>. Right bound excluded.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.17</li></ul></div></div><div class="spec val" id="val-random"><a href="#val-random" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>random : <span class="type-var">'a</span> <a href="index.html#type-random_gen">random_gen</a> <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <a href="index.html#type-random_gen">random_gen</a></code></div><div class="doc"></div></div><div class="spec val" id="val-random_non_empty"><a href="#val-random_non_empty" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>random_non_empty : <span class="type-var">'a</span> <a href="index.html#type-random_gen">random_gen</a> <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <a href="index.html#type-random_gen">random_gen</a></code></div><div class="doc"></div></div><div class="spec val" id="val-random_len"><a href="#val-random_len" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>random_len : int <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-random_gen">random_gen</a> <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <a href="index.html#type-random_gen">random_gen</a></code></div><div class="doc"></div></div><h3>Generic Functions</h3><div class="spec module-type" id="module-type-MONO_ARRAY"><a href="#module-type-MONO_ARRAY" class="anchor"></a><div class="def module-type"><code><span class="keyword">module type </span><a href="module-type-MONO_ARRAY/index.html">MONO_ARRAY</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="doc"></div></div><div class="spec val" id="val-sort_generic"><a href="#val-sort_generic" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>sort_generic : (<span class="keyword">module </span><a href="module-type-MONO_ARRAY/index.html">MONO_ARRAY</a> <span class="keyword">with</span> <span class="keyword">type </span><a href="module-type-MONO_ARRAY/index.html#type-elt">elt</a> <span class="keyword">=</span> <span class="type-var">'elt</span><span class="keyword"> and </span><span class="keyword">type </span><a href="module-type-MONO_ARRAY/index.html#type-t">t</a> <span class="keyword">=</span> <span class="type-var">'arr</span>) <span class="keyword">‑></span> cmp:(<span class="type-var">'elt</span> <span class="keyword">‑></span> <span class="type-var">'elt</span> <span class="keyword">‑></span> int) <span class="keyword">‑></span> <span class="type-var">'arr</span> <span class="keyword">‑></span> unit</code></div><div class="doc"><p><code class="code">sort_generic (module M) cmp a</code> sorts the array <code class="code">a</code>, without allocating (eats stack space though).
|
|
Performance might be lower than <span class="xref-unresolved" title="unresolved reference to "Array.sort"">Array.sort</span>.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.14</li></ul></div></div></body></html> |