mirror of
https://github.com/c-cube/ocaml-containers.git
synced 2025-12-06 11:15:31 -05:00
2 lines
No EOL
57 KiB
HTML
2 lines
No EOL
57 KiB
HTML
<!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="generator" content="odoc 1.5.2"/><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> » 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><ul><li><a href="#infix-operators">Infix Operators</a></li></ul></li></ul></nav></header><dl><dt class="spec type" id="type-iter"><a href="#type-iter" class="anchor"></a><code><span class="keyword">type</span> <span>'a iter</span></code><code> = <span>(<span class="type-var">'a</span> <span>-></span> unit)</span> <span>-></span> unit</code></dt><dd><p>Fast internal iterator.</p><dl><dt>since</dt><dd>2.8</dd></dl></dd></dl><dl><dt class="spec type" id="type-gen"><a href="#type-gen" class="anchor"></a><code><span class="keyword">type</span> <span>'a gen</span></code><code> = unit <span>-></span> <span><span class="type-var">'a</span> option</span></code></dt><dt class="spec type" id="type-equal"><a href="#type-equal" class="anchor"></a><code><span class="keyword">type</span> <span>'a equal</span></code><code> = <span class="type-var">'a</span> <span>-></span> <span class="type-var">'a</span> <span>-></span> bool</code></dt><dt class="spec type" id="type-ord"><a href="#type-ord" class="anchor"></a><code><span class="keyword">type</span> <span>'a ord</span></code><code> = <span class="type-var">'a</span> <span>-></span> <span class="type-var">'a</span> <span>-></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> <span>'a random_gen</span></code><code> = Stdlib.Random.State.t <span>-></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> <span>'a printer</span></code><code> = Stdlib.Format.formatter <span>-></span> <span class="type-var">'a</span> <span>-></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> <a href="../CCShimsArrayLabels_/index.html">CCShimsArrayLabels_</a></code></span></summary><div><div class="spec include"><div class="doc"><p><a href="http://caml.inria.fr/pub/docs/manual-ocaml/libref/ArrayLabels.html">Documentation for the standard ArrayLabels module</a></p><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> Stdlib.ArrayLabels <span class="keyword">with</span> <span class="keyword">module</span> <a href="index.html">CCArrayLabels</a>.Floatarray = Stdlib.Array.Floatarray</code></span></summary><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> <span>!'a t</span></code><code> = <span><span class="type-var">'a</span> array</span></code></dt></dl><dl><dt class="spec external" id="val-length"><a href="#val-length" class="anchor"></a><code><span class="keyword">val</span> length : <span><span class="type-var">'a</span> array</span> <span>-></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><span class="type-var">'a</span> array</span> <span>-></span> int <span>-></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><span class="type-var">'a</span> array</span> <span>-></span> int <span>-></span> <span class="type-var">'a</span> <span>-></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>-></span> <span class="type-var">'a</span> <span>-></span> <span><span class="type-var">'a</span> array</span></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>-></span> <span class="type-var">'a</span> <span>-></span> <span><span class="type-var">'a</span> array</span></code></dt><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>-></span> <span>float array</span></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>-></span> <span>float array</span></code></dt><dt class="spec value" id="val-init"><a href="#val-init" class="anchor"></a><code><span class="keyword">val</span> init : int <span>-></span> <span>f:<span>(int <span>-></span> <span class="type-var">'a</span>)</span></span> <span>-></span> <span><span class="type-var">'a</span> array</span></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 : <span>dimx:int</span> <span>-></span> <span>dimy:int</span> <span>-></span> <span class="type-var">'a</span> <span>-></span> <span><span><span class="type-var">'a</span> array</span> array</span></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 : <span>dimx:int</span> <span>-></span> <span>dimy:int</span> <span>-></span> <span class="type-var">'a</span> <span>-></span> <span><span><span class="type-var">'a</span> array</span> array</span></code></dt><dt class="spec value" id="val-append"><a href="#val-append" class="anchor"></a><code><span class="keyword">val</span> append : <span><span class="type-var">'a</span> array</span> <span>-></span> <span><span class="type-var">'a</span> array</span> <span>-></span> <span><span class="type-var">'a</span> array</span></code></dt><dt class="spec value" id="val-concat"><a href="#val-concat" class="anchor"></a><code><span class="keyword">val</span> concat : <span><span><span class="type-var">'a</span> array</span> list</span> <span>-></span> <span><span class="type-var">'a</span> array</span></code></dt><dt class="spec value" id="val-sub"><a href="#val-sub" class="anchor"></a><code><span class="keyword">val</span> sub : <span><span class="type-var">'a</span> array</span> <span>-></span> <span>pos:int</span> <span>-></span> <span>len:int</span> <span>-></span> <span><span class="type-var">'a</span> array</span></code></dt><dt class="spec value" id="val-copy"><a href="#val-copy" class="anchor"></a><code><span class="keyword">val</span> copy : <span><span class="type-var">'a</span> array</span> <span>-></span> <span><span class="type-var">'a</span> array</span></code></dt><dt class="spec value" id="val-fill"><a href="#val-fill" class="anchor"></a><code><span class="keyword">val</span> fill : <span><span class="type-var">'a</span> array</span> <span>-></span> <span>pos:int</span> <span>-></span> <span>len:int</span> <span>-></span> <span class="type-var">'a</span> <span>-></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 : <span>src:<span><span class="type-var">'a</span> array</span></span> <span>-></span> <span>src_pos:int</span> <span>-></span> <span>dst:<span><span class="type-var">'a</span> array</span></span> <span>-></span> <span>dst_pos:int</span> <span>-></span> <span>len:int</span> <span>-></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><span class="type-var">'a</span> array</span> <span>-></span> <span><span class="type-var">'a</span> list</span></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><span class="type-var">'a</span> list</span> <span>-></span> <span><span class="type-var">'a</span> array</span></code></dt><dt class="spec value" id="val-iter"><a href="#val-iter" class="anchor"></a><code><span class="keyword">val</span> iter : <span>f:<span>(<span class="type-var">'a</span> <span>-></span> unit)</span></span> <span>-></span> <span><span class="type-var">'a</span> array</span> <span>-></span> unit</code></dt><dt class="spec value" id="val-iteri"><a href="#val-iteri" class="anchor"></a><code><span class="keyword">val</span> iteri : <span>f:<span>(int <span>-></span> <span class="type-var">'a</span> <span>-></span> unit)</span></span> <span>-></span> <span><span class="type-var">'a</span> array</span> <span>-></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 : <span>f:<span>(<span class="type-var">'a</span> <span>-></span> <span class="type-var">'b</span>)</span></span> <span>-></span> <span><span class="type-var">'a</span> array</span> <span>-></span> <span><span class="type-var">'b</span> array</span></code></dt><dt class="spec value" id="val-mapi"><a href="#val-mapi" class="anchor"></a><code><span class="keyword">val</span> mapi : <span>f:<span>(int <span>-></span> <span class="type-var">'a</span> <span>-></span> <span class="type-var">'b</span>)</span></span> <span>-></span> <span><span class="type-var">'a</span> array</span> <span>-></span> <span><span class="type-var">'b</span> array</span></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 : <span>f:<span>(<span class="type-var">'a</span> <span>-></span> <span class="type-var">'b</span> <span>-></span> <span class="type-var">'a</span>)</span></span> <span>-></span> <span>init:<span class="type-var">'a</span></span> <span>-></span> <span><span class="type-var">'b</span> array</span> <span>-></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 : <span>f:<span>(<span class="type-var">'b</span> <span>-></span> <span class="type-var">'a</span> <span>-></span> <span class="type-var">'a</span>)</span></span> <span>-></span> <span><span class="type-var">'b</span> array</span> <span>-></span> <span>init:<span class="type-var">'a</span></span> <span>-></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 : <span>f:<span>(<span class="type-var">'a</span> <span>-></span> <span class="type-var">'b</span> <span>-></span> unit)</span></span> <span>-></span> <span><span class="type-var">'a</span> array</span> <span>-></span> <span><span class="type-var">'b</span> array</span> <span>-></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 : <span>f:<span>(<span class="type-var">'a</span> <span>-></span> <span class="type-var">'b</span> <span>-></span> <span class="type-var">'c</span>)</span></span> <span>-></span> <span><span class="type-var">'a</span> array</span> <span>-></span> <span><span class="type-var">'b</span> array</span> <span>-></span> <span><span class="type-var">'c</span> array</span></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 : <span>f:<span>(<span class="type-var">'a</span> <span>-></span> bool)</span></span> <span>-></span> <span><span class="type-var">'a</span> array</span> <span>-></span> bool</code></dt><dt class="spec value" id="val-exists"><a href="#val-exists" class="anchor"></a><code><span class="keyword">val</span> exists : <span>f:<span>(<span class="type-var">'a</span> <span>-></span> bool)</span></span> <span>-></span> <span><span class="type-var">'a</span> array</span> <span>-></span> bool</code></dt><dt class="spec value" id="val-for_all2"><a href="#val-for_all2" class="anchor"></a><code><span class="keyword">val</span> for_all2 : <span>f:<span>(<span class="type-var">'a</span> <span>-></span> <span class="type-var">'b</span> <span>-></span> bool)</span></span> <span>-></span> <span><span class="type-var">'a</span> array</span> <span>-></span> <span><span class="type-var">'b</span> array</span> <span>-></span> bool</code></dt><dt class="spec value" id="val-exists2"><a href="#val-exists2" class="anchor"></a><code><span class="keyword">val</span> exists2 : <span>f:<span>(<span class="type-var">'a</span> <span>-></span> <span class="type-var">'b</span> <span>-></span> bool)</span></span> <span>-></span> <span><span class="type-var">'a</span> array</span> <span>-></span> <span><span class="type-var">'b</span> array</span> <span>-></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>-></span> <span>set:<span><span class="type-var">'a</span> array</span></span> <span>-></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>-></span> <span>set:<span><span class="type-var">'a</span> array</span></span> <span>-></span> bool</code></dt><dt class="spec value" id="val-sort"><a href="#val-sort" class="anchor"></a><code><span class="keyword">val</span> sort : <span>cmp:<span>(<span class="type-var">'a</span> <span>-></span> <span class="type-var">'a</span> <span>-></span> int)</span></span> <span>-></span> <span><span class="type-var">'a</span> array</span> <span>-></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 : <span>cmp:<span>(<span class="type-var">'a</span> <span>-></span> <span class="type-var">'a</span> <span>-></span> int)</span></span> <span>-></span> <span><span class="type-var">'a</span> array</span> <span>-></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 : <span>cmp:<span>(<span class="type-var">'a</span> <span>-></span> <span class="type-var">'a</span> <span>-></span> int)</span></span> <span>-></span> <span><span class="type-var">'a</span> array</span> <span>-></span> unit</code></dt><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><span class="type-var">'a</span> array</span> <span>-></span> <span><span class="type-var">'a</span> Stdlib.Seq.t</span></code></dt><dt class="spec value" id="val-to_seqi"><a href="#val-to_seqi" class="anchor"></a><code><span class="keyword">val</span> to_seqi : <span><span class="type-var">'a</span> array</span> <span>-></span> <span><span>(int * <span class="type-var">'a</span>)</span> Stdlib.Seq.t</span></code></dt><dt class="spec value" id="val-of_seq"><a href="#val-of_seq" class="anchor"></a><code><span class="keyword">val</span> of_seq : <span><span class="type-var">'a</span> Stdlib.Seq.t</span> <span>-></span> <span><span class="type-var">'a</span> array</span></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><span class="type-var">'a</span> array</span> <span>-></span> int <span>-></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><span class="type-var">'a</span> array</span> <span>-></span> int <span>-></span> <span class="type-var">'a</span> <span>-></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></details></div></div></div><dl><dt class="spec value" id="val-empty"><a href="#val-empty" class="anchor"></a><code><span class="keyword">val</span> empty : <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span></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><span class="type-var">'a</span> <a href="index.html#type-equal">equal</a></span> <span>-></span> <span><span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span> <a href="index.html#type-equal">equal</a></span></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><span class="type-var">'a</span> <a href="index.html#type-ord">ord</a></span> <span>-></span> <span><span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span> <a href="index.html#type-ord">ord</a></span></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><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span> <span>-></span> int <span>-></span> int <span>-></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_safe"><a href="#val-get_safe" class="anchor"></a><code><span class="keyword">val</span> get_safe : <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span> <span>-></span> int <span>-></span> <span><span class="type-var">'a</span> option</span></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-fold"><a href="#val-fold" class="anchor"></a><code><span class="keyword">val</span> fold : <span>f:<span>(<span class="type-var">'a</span> <span>-></span> <span class="type-var">'b</span> <span>-></span> <span class="type-var">'a</span>)</span></span> <span>-></span> <span>init:<span class="type-var">'a</span></span> <span>-></span> <span><span class="type-var">'b</span> <a href="index.html#type-t">t</a></span> <span>-></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>. Same as <span class="xref-unresolved" title="unresolved reference to "ArrayLabels.fold_left""><code>ArrayLabels</code>.fold_left</span></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 : <span>f:<span>(<span class="type-var">'a</span> <span>-></span> int <span>-></span> <span class="type-var">'b</span> <span>-></span> <span class="type-var">'a</span>)</span></span> <span>-></span> <span>init:<span class="type-var">'a</span></span> <span>-></span> <span><span class="type-var">'b</span> <a href="index.html#type-t">t</a></span> <span>-></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 : <span>f:<span>(<span class="type-var">'a</span> <span>-></span> <span class="type-var">'b</span> <span>-></span> <span class="type-var">'a</span> * <span>[ `Stop <span>| `Continue</span> ]</span>)</span></span> <span>-></span> <span>init:<span class="type-var">'a</span></span> <span>-></span> <span><span class="type-var">'b</span> <a href="index.html#type-t">t</a></span> <span>-></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 : <span>f:<span>(<span class="type-var">'acc</span> <span>-></span> <span class="type-var">'a</span> <span>-></span> <span class="type-var">'acc</span> * <span class="type-var">'b</span>)</span></span> <span>-></span> <span>init:<span class="type-var">'acc</span></span> <span>-></span> <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span> <span>-></span> <span class="type-var">'acc</span> * <span><span class="type-var">'b</span> <a href="index.html#type-t">t</a></span></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 : <span>f:<span>(<span class="type-var">'acc</span> <span>-></span> <span class="type-var">'a</span> <span>-></span> <span class="type-var">'acc</span>)</span></span> <span>-></span> <span>init:<span class="type-var">'acc</span></span> <span>-></span> <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span> <span>-></span> <span><span class="type-var">'acc</span> <a href="index.html#type-t">t</a></span></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-reverse_in_place"><a href="#val-reverse_in_place" class="anchor"></a><code><span class="keyword">val</span> reverse_in_place : <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span> <span>-></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 : <span>f:<span>(<span class="type-var">'a</span> <span>-></span> <span class="type-var">'a</span> <span>-></span> int)</span></span> <span>-></span> <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span> <span>-></span> <span><span class="type-var">'a</span> array</span></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 : <span>f:<span>(<span class="type-var">'a</span> <span>-></span> <span class="type-var">'a</span> <span>-></span> int)</span></span> <span>-></span> <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span> <span>-></span> <span>int array</span></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 -> 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 : <span>f:<span>(<span class="type-var">'a</span> <span>-></span> <span class="type-var">'a</span> <span>-></span> int)</span></span> <span>-></span> <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span> <span>-></span> <span>int array</span></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 -> (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-mem"><a href="#val-mem" class="anchor"></a><code><span class="keyword">val</span> mem : <span>?⁠eq:<span>(<span class="type-var">'a</span> <span>-></span> <span class="type-var">'a</span> <span>-></span> bool)</span></span> <span>-></span> <span class="type-var">'a</span> <span>-></span> <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span> <span>-></span> bool</code></dt><dd><p><code>mem ~eq x a</code> return true if x is present in <code>a</code>. Linear time.</p><dl><dt>since</dt><dd>3.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 : <span>f:<span>(<span class="type-var">'a</span> <span>-></span> <span><span class="type-var">'b</span> option</span>)</span></span> <span>-></span> <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span> <span>-></span> <span><span class="type-var">'b</span> option</span></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_map_i"><a href="#val-find_map_i" class="anchor"></a><code><span class="keyword">val</span> find_map_i : <span>f:<span>(int <span>-></span> <span class="type-var">'a</span> <span>-></span> <span><span class="type-var">'b</span> option</span>)</span></span> <span>-></span> <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span> <span>-></span> <span><span class="type-var">'b</span> option</span></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-find_idx"><a href="#val-find_idx" class="anchor"></a><code><span class="keyword">val</span> find_idx : <span>f:<span>(<span class="type-var">'a</span> <span>-></span> bool)</span></span> <span>-></span> <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span> <span>-></span> <span><span>(int * <span class="type-var">'a</span>)</span> option</span></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 : <span>cmp:<span><span class="type-var">'a</span> <a href="index.html#type-ord">ord</a></span></span> <span>-></span> <span>key:<span class="type-var">'a</span></span> <span>-></span> <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span> <span>-></span> <span>int option</span></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 : <span>cmp:<span><span class="type-var">'a</span> <a href="index.html#type-ord">ord</a></span></span> <span>-></span> <span>key:<span class="type-var">'a</span></span> <span>-></span> <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span> <span>-></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 : <span>cmp:<span>(<span class="type-var">'a</span> <span>-></span> <span class="type-var">'a</span> <span>-></span> int)</span></span> <span>-></span> <span>key:<span class="type-var">'a</span></span> <span>-></span> <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span> <span>-></span> <span>[ `All_lower <span>| `All_bigger</span> <span><span>| `Just_after</span> of int</span> <span>| `Empty</span> <span><span>| `At</span> of int</span> ]</span></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) < key < 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_all2"><a href="#val-for_all2" class="anchor"></a><code><span class="keyword">val</span> for_all2 : <span>f:<span>(<span class="type-var">'a</span> <span>-></span> <span class="type-var">'b</span> <span>-></span> bool)</span></span> <span>-></span> <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span> <span>-></span> <span><span class="type-var">'b</span> <a href="index.html#type-t">t</a></span> <span>-></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) && (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-exists2"><a href="#val-exists2" class="anchor"></a><code><span class="keyword">val</span> exists2 : <span>f:<span>(<span class="type-var">'a</span> <span>-></span> <span class="type-var">'b</span> <span>-></span> bool)</span></span> <span>-></span> <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span> <span>-></span> <span><span class="type-var">'b</span> <a href="index.html#type-t">t</a></span> <span>-></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 : <span>f:<span>(<span class="type-var">'acc</span> <span>-></span> <span class="type-var">'a</span> <span>-></span> <span class="type-var">'b</span> <span>-></span> <span class="type-var">'acc</span>)</span></span> <span>-></span> <span>init:<span class="type-var">'acc</span></span> <span>-></span> <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span> <span>-></span> <span><span class="type-var">'b</span> <a href="index.html#type-t">t</a></span> <span>-></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 : <span>f:<span>(<span class="type-var">'a</span> <span>-></span> <span class="type-var">'b</span> <span>-></span> unit)</span></span> <span>-></span> <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span> <span>-></span> <span><span class="type-var">'b</span> <a href="index.html#type-t">t</a></span> <span>-></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><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span> <span>-></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 : Stdlib.Random.State.t <span>-></span> <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span> <span>-></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><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span> <span>-></span> <span><span class="type-var">'a</span> <a href="index.html#type-random_gen">random_gen</a></span></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_string"><a href="#val-to_string" class="anchor"></a><code><span class="keyword">val</span> to_string : <span>?⁠sep:string</span> <span>-></span> <span>(<span class="type-var">'a</span> <span>-></span> string)</span> <span>-></span> <span><span class="type-var">'a</span> array</span> <span>-></span> string</code></dt><dd><p><code>to_string ~sep item_to_string a</code> print <code>a</code> to a string using <code>sep</code> as a separator between elements of <code>a</code>.</p><dl><dt>since</dt><dd>2.7</dd></dl></dd></dl><dl><dt class="spec value" id="val-to_iter"><a href="#val-to_iter" class="anchor"></a><code><span class="keyword">val</span> to_iter : <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span> <span>-></span> <span><span class="type-var">'a</span> <a href="index.html#type-iter">iter</a></span></code></dt><dd><p><code>to_iter a</code> returns an <code>iter</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 iterator.</p><dl><dt>since</dt><dd>2.8</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><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span> <span>-></span> <span><span class="type-var">'a</span> Stdlib.Seq.t</span></code></dt><dd><p><code>to_seq a</code> returns a <code>Seq.t</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. Renamed from <code>to_std_seq</code> since 3.0.</p><dl><dt>since</dt><dd>3.0</dd></dl></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><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span> <span>-></span> <span><span class="type-var">'a</span> <a href="index.html#type-gen">gen</a></span></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></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 : <span>?⁠pp_start:<span>unit <a href="index.html#type-printer">printer</a></span></span> <span>-></span> <span>?⁠pp_stop:<span>unit <a href="index.html#type-printer">printer</a></span></span> <span>-></span> <span>?⁠pp_sep:<span>unit <a href="index.html#type-printer">printer</a></span></span> <span>-></span> <span><span class="type-var">'a</span> <a href="index.html#type-printer">printer</a></span> <span>-></span> <span><span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span> <a href="index.html#type-printer">printer</a></span></code></dt><dd><p><code>pp ~pp_start ~pp_stop ~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>, <code>pp_start</code> is called at the beginning, <code>pp_stop</code> is called at the end, <code>pp_sep</code> is called between each elements. By defaults <code>pp_start</code> and <code>pp_stop</code> does nothing and <code>pp_sep</code> defaults to (fun out -> Format.fprintf out ",@ ").</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 : <span>?⁠pp_start:<span>unit <a href="index.html#type-printer">printer</a></span></span> <span>-></span> <span>?⁠pp_stop:<span>unit <a href="index.html#type-printer">printer</a></span></span> <span>-></span> <span>?⁠pp_sep:<span>unit <a href="index.html#type-printer">printer</a></span></span> <span>-></span> <span>(int <span>-></span> <span><span class="type-var">'a</span> <a href="index.html#type-printer">printer</a></span>)</span> <span>-></span> <span><span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span> <a href="index.html#type-printer">printer</a></span></code></dt><dd><p><code>pp_i ~pp_start ~pp_stop ~pp_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. <code>pp_start</code> is called at the beginning, <code>pp_stop</code> is called at the end, <code>pp_sep</code> is called between each elements. By defaults <code>pp_start</code> and <code>pp_stop</code> does nothing and <code>pp_sep</code> defaults to (fun out -> Format.fprintf out ",@ ").</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 : <span>f:<span>(<span class="type-var">'a</span> <span>-></span> <span class="type-var">'b</span> <span>-></span> <span class="type-var">'c</span>)</span></span> <span>-></span> <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span> <span>-></span> <span><span class="type-var">'b</span> <a href="index.html#type-t">t</a></span> <span>-></span> <span><span class="type-var">'c</span> <a href="index.html#type-t">t</a></span></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><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span> <span>-></span> <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span></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 : <span>f:<span>(<span class="type-var">'a</span> <span>-></span> bool)</span></span> <span>-></span> <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span> <span>-></span> <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span></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 : <span>f:<span>(<span class="type-var">'a</span> <span>-></span> <span><span class="type-var">'b</span> option</span>)</span></span> <span>-></span> <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span> <span>-></span> <span><span class="type-var">'b</span> <a href="index.html#type-t">t</a></span></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-monoid_product"><a href="#val-monoid_product" class="anchor"></a><code><span class="keyword">val</span> monoid_product : <span>f:<span>(<span class="type-var">'a</span> <span>-></span> <span class="type-var">'b</span> <span>-></span> <span class="type-var">'c</span>)</span></span> <span>-></span> <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span> <span>-></span> <span><span class="type-var">'b</span> <a href="index.html#type-t">t</a></span> <span>-></span> <span><span class="type-var">'c</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p><code>monoid_product ~f a b</code> passes all combinaisons of tuples from the two arrays <code>a</code> and <code>b</code> to the function <code>f</code>.</p><dl><dt>since</dt><dd>2.8</dd></dl></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 : <span>f:<span>(<span class="type-var">'a</span> <span>-></span> <span><span class="type-var">'b</span> <a href="index.html#type-t">t</a></span>)</span></span> <span>-></span> <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span> <span>-></span> <span><span class="type-var">'b</span> array</span></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-except_idx"><a href="#val-except_idx" class="anchor"></a><code><span class="keyword">val</span> except_idx : <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span> <span>-></span> int <span>-></span> <span><span class="type-var">'a</span> list</span></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-random"><a href="#val-random" class="anchor"></a><code><span class="keyword">val</span> random : <span><span class="type-var">'a</span> <a href="index.html#type-random_gen">random_gen</a></span> <span>-></span> <span><span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span> <a href="index.html#type-random_gen">random_gen</a></span></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><span class="type-var">'a</span> <a href="index.html#type-random_gen">random_gen</a></span> <span>-></span> <span><span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span> <a href="index.html#type-random_gen">random_gen</a></span></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>-></span> <span><span class="type-var">'a</span> <a href="index.html#type-random_gen">random_gen</a></span> <span>-></span> <span><span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span> <a href="index.html#type-random_gen">random_gen</a></span></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>(<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> <span>-></span> <span>cmp:<span>(<span class="type-var">'elt</span> <span>-></span> <span class="type-var">'elt</span> <span>-></span> int)</span></span> <span>-></span> <span class="type-var">'arr</span> <span>-></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 "Array.sort""><code>Array</code>.sort</span>.</p><dl><dt>since</dt><dd>0.14</dd></dl></dd></dl><section><header><h4 id="infix-operators"><a href="#infix-operators" class="anchor"></a>Infix Operators</h4><p>It is convenient to <span class="xref-unresolved" title="unresolved reference to "open CCArray.Infix""><code>open CCArray</code>.Infix</span> to access the infix operators without cluttering the scope too much.</p><dl><dt>since</dt><dd>2.7</dd></dl></header><div class="spec module" id="module-Infix"><a href="#module-Infix" class="anchor"></a><code><span class="keyword">module</span> <a href="Infix/index.html">Infix</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><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> <a href="index.html#module-Infix">Infix</a></code></span></summary><dl><dt class="spec value" id="val-(>>=)"><a href="#val-(>>=)" class="anchor"></a><code><span class="keyword">val</span> (>>=) : <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span> <span>-></span> <span>(<span class="type-var">'a</span> <span>-></span> <span><span class="type-var">'b</span> <a href="index.html#type-t">t</a></span>)</span> <span>-></span> <span><span class="type-var">'b</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p><code>a >>= 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-(>>|)"><a href="#val-(>>|)" class="anchor"></a><code><span class="keyword">val</span> (>>|) : <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span> <span>-></span> <span>(<span class="type-var">'a</span> <span>-></span> <span class="type-var">'b</span>)</span> <span>-></span> <span><span class="type-var">'b</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p><code>a >>| 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-(>|=)"><a href="#val-(>|=)" class="anchor"></a><code><span class="keyword">val</span> (>|=) : <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span> <span>-></span> <span>(<span class="type-var">'a</span> <span>-></span> <span class="type-var">'b</span>)</span> <span>-></span> <span><span class="type-var">'b</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p><code>a >|= 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-(--)"><a href="#val-(--)" class="anchor"></a><code><span class="keyword">val</span> (--) : int <span>-></span> int <span>-></span> <span>int <a href="index.html#type-t">t</a></span></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>-></span> int <span>-></span> <span>int <a href="index.html#type-t">t</a></span></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><div><div class="spec include"><div class="doc"><p>Let operators on OCaml >= 4.08.0, nothing otherwise</p><dl><dt>since</dt><dd>2.8</dd></dl><details open="open"><summary><span class="def"><code><span class="keyword">include</span> <a href="../CCShimsMkLet_/index.html#module-type-S">CCShimsMkLet_.S</a> <span class="keyword">with</span> <span class="keyword">type</span> <span>'a <a href="../CCShimsMkLet_/module-type-S/index.html#type-t_let">t_let</a></span> := <span><span class="type-var">'a</span> array</span></code></span></summary><dl><dt class="spec type" id="type-t_let"><a href="#type-t_let" class="anchor"></a><code><span class="keyword">type</span> <span>'a t_let</span></code></dt></dl><dl><dt class="spec value" id="val-let+"><a href="#val-let+" class="anchor"></a><code><span class="keyword">val</span> let+ : <span><span class="type-var">'a</span> <a href="index.html#type-t_let">t_let</a></span> <span>-></span> <span>(<span class="type-var">'a</span> <span>-></span> <span class="type-var">'b</span>)</span> <span>-></span> <span><span class="type-var">'b</span> <a href="index.html#type-t_let">t_let</a></span></code></dt><dt class="spec value" id="val-and+"><a href="#val-and+" class="anchor"></a><code><span class="keyword">val</span> and+ : <span><span class="type-var">'a</span> <a href="index.html#type-t_let">t_let</a></span> <span>-></span> <span><span class="type-var">'b</span> <a href="index.html#type-t_let">t_let</a></span> <span>-></span> <span><span>(<span class="type-var">'a</span> * <span class="type-var">'b</span>)</span> <a href="index.html#type-t_let">t_let</a></span></code></dt><dt class="spec value" id="val-let*"><a href="#val-let*" class="anchor"></a><code><span class="keyword">val</span> let* : <span><span class="type-var">'a</span> <a href="index.html#type-t_let">t_let</a></span> <span>-></span> <span>(<span class="type-var">'a</span> <span>-></span> <span><span class="type-var">'b</span> <a href="index.html#type-t_let">t_let</a></span>)</span> <span>-></span> <span><span class="type-var">'b</span> <a href="index.html#type-t_let">t_let</a></span></code></dt><dt class="spec value" id="val-and*"><a href="#val-and*" class="anchor"></a><code><span class="keyword">val</span> and* : <span><span class="type-var">'a</span> <a href="index.html#type-t_let">t_let</a></span> <span>-></span> <span><span class="type-var">'b</span> <a href="index.html#type-t_let">t_let</a></span> <span>-></span> <span><span>(<span class="type-var">'a</span> * <span class="type-var">'b</span>)</span> <a href="index.html#type-t_let">t_let</a></span></code></dt></dl></details></div></div></div></details></div></div></div></section></section></div></body></html> |