ocaml-containers/dev/containers/CCArrayLabels/index.html
2019-05-31 09:29:25 -05:00

2 lines
No EOL
51 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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