mirror of
https://github.com/c-cube/ocaml-containers.git
synced 2025-12-06 11:15:31 -05:00
42 lines
No EOL
34 KiB
HTML
42 lines
No EOL
34 KiB
HTML
<!DOCTYPE html>
|
|
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>CCArray_slice (containers.CCArray_slice)</title><link rel="stylesheet" href="../../odoc.css"/><meta charset="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><meta name="generator" content="doc-ock-html v1.0.0-1-g1fc9bf0"/></head><body><nav id="top"><a href="../index.html">Up</a> — <span class="package">package <a href="../index.html">containers</a></span></nav><header><h1><span class="keyword">Module</span> <span class="module-path">CCArray_slice</span></h1></header><h2>Array Slice</h2><div class="spec type" id="type-sequence"><a href="#type-sequence" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>'a sequence</code><code><span class="keyword"> = </span>(<span class="type-var">'a</span> <span class="keyword">‑></span> unit) <span class="keyword">‑></span> unit</code><code></code></div><div class="doc"></div></div><div class="spec type" id="type-klist"><a href="#type-klist" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>'a klist</code><code><span class="keyword"> = </span>unit <span class="keyword">‑></span> [ `Nil | `Cons of <span class="type-var">'a</span><span class="keyword"> * </span><span class="type-var">'a</span> <a href="index.html#type-klist">klist</a> ]</code><code></code></div><div class="doc"></div></div><div class="spec type" id="type-gen"><a href="#type-gen" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>'a gen</code><code><span class="keyword"> = </span>unit <span class="keyword">‑></span> <span class="type-var">'a</span> option</code><code></code></div><div class="doc"></div></div><div class="spec type" id="type-equal"><a href="#type-equal" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>'a equal</code><code><span class="keyword"> = </span><span class="type-var">'a</span> <span class="keyword">‑></span> <span class="type-var">'a</span> <span class="keyword">‑></span> bool</code><code></code></div><div class="doc"></div></div><div class="spec type" id="type-ord"><a href="#type-ord" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>'a ord</code><code><span class="keyword"> = </span><span class="type-var">'a</span> <span class="keyword">‑></span> <span class="type-var">'a</span> <span class="keyword">‑></span> int</code><code></code></div><div class="doc"></div></div><div class="spec type" id="type-random_gen"><a href="#type-random_gen" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>'a random_gen</code><code><span class="keyword"> = </span>Random.State.t <span class="keyword">‑></span> <span class="type-var">'a</span></code><code></code></div><div class="doc"></div></div><div class="spec type" id="type-printer"><a href="#type-printer" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>'a printer</code><code><span class="keyword"> = </span>Format.formatter <span class="keyword">‑></span> <span class="type-var">'a</span> <span class="keyword">‑></span> unit</code><code></code></div><div class="doc"></div></div><div class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>'a t</code><code></code><code></code></div><div class="doc"><p>Array slice, containing elements of type <code class="code">'a</code>.</p></div></div><div class="spec val" id="val-empty"><a href="#val-empty" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>empty : <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>The empty array slice.</p></div></div><div class="spec val" id="val-equal"><a href="#val-equal" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>equal : <span class="type-var">'a</span> <a href="index.html#type-equal">equal</a> <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <a href="index.html#type-equal">equal</a></code></div><div class="doc"></div></div><div class="spec val" id="val-compare"><a href="#val-compare" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>compare : <span class="type-var">'a</span> <a href="index.html#type-ord">ord</a> <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <a href="index.html#type-ord">ord</a></code></div><div class="doc"></div></div><div class="spec val" id="val-get"><a href="#val-get" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>get : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> int <span class="keyword">‑></span> <span class="type-var">'a</span></code></div><div class="doc"><p><code class="code">get a n</code> returns the element number <code class="code">n</code> of array <code class="code">a</code>.
|
|
The first element has number 0.
|
|
The last element has number <code class="code">length a - 1</code>.
|
|
You can also write <code class="code">a.(n)</code> instead of <code class="code">get a n</code>.</p><p>Raise <code class="code">Invalid_argument "index out of bounds"</code>
|
|
if <code class="code">n</code> is outside the range 0 to <code class="code">(length a - 1)</code>.</p></div></div><div class="spec val" id="val-get_safe"><a href="#val-get_safe" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>get_safe : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> int <span class="keyword">‑></span> <span class="type-var">'a</span> option</code></div><div class="doc"><p><code class="code">get_safe a i</code> returns <code class="code">Some a.(i)</code> if <code class="code">i</code> is a valid index.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.18</li></ul></div></div><div class="spec val" id="val-make"><a href="#val-make" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>make : <span class="type-var">'a</span> array <span class="keyword">‑></span> int <span class="keyword">‑></span> len:int <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Create a slice from given offset and length.</p><ul class="at-tag"><li><span class="at-tag raise">Raises</span> <span class="module-path">Invalid_argument</span>: if the slice isn't valid.</li></ul></div></div><div class="spec val" id="val-of_slice"><a href="#val-of_slice" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>of_slice : (<span class="type-var">'a</span> array<span class="keyword"> * </span>int<span class="keyword"> * </span>int) <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Make a sub-array from a triple <code class="code">(arr, i, len)</code> where <code class="code">arr</code> is the array,
|
|
<code class="code">i</code> the offset in <code class="code">arr</code>, and <code class="code">len</code> the number of elements of the slice.</p><ul class="at-tag"><li><span class="at-tag raise">Raises</span> <span class="module-path">Invalid_argument</span>: if the slice isn't valid (See <a href="index.html#val-make">make</a>).</li></ul></div></div><div class="spec val" id="val-to_slice"><a href="#val-to_slice" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>to_slice : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'a</span> array<span class="keyword"> * </span>int<span class="keyword"> * </span>int</code></div><div class="doc"><p>Convert into a triple <code class="code">(arr, i, len)</code> where <code class="code">len</code> is the length of
|
|
the sub-array of <code class="code">arr</code> starting at offset <code class="code">i</code>.</p></div></div><div class="spec val" id="val-to_list"><a href="#val-to_list" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>to_list : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'a</span> list</code></div><div class="doc"><p>Convert directly to a list.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 1.0</li></ul></div></div><div class="spec val" id="val-full"><a href="#val-full" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>full : <span class="type-var">'a</span> array <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Slice that covers the full array.</p></div></div><div class="spec val" id="val-underlying"><a href="#val-underlying" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>underlying : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'a</span> array</code></div><div class="doc"><p>Underlying array (shared). Modifying this array will modify the slice.</p></div></div><div class="spec val" id="val-copy"><a href="#val-copy" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>copy : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'a</span> array</code></div><div class="doc"><p>Copy into a new array.</p></div></div><div class="spec val" id="val-sub"><a href="#val-sub" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>sub : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> int <span class="keyword">‑></span> int <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Sub-slice.</p></div></div><div class="spec val" id="val-set"><a href="#val-set" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>set : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> int <span class="keyword">‑></span> <span class="type-var">'a</span> <span class="keyword">‑></span> unit</code></div><div class="doc"><p><code class="code">set a n x</code> modifies array <code class="code">a</code> in place, replacing
|
|
element number <code class="code">n</code> with <code class="code">x</code>.
|
|
You can also write <code class="code">a.(n) <- x</code> instead of <code class="code">set a n x</code>.</p><p>Raise <code class="code">Invalid_argument "index out of bounds"</code>
|
|
if <code class="code">n</code> is outside the range 0 to <code class="code">length a - 1</code>.</p></div></div><div class="spec val" id="val-length"><a href="#val-length" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>length : <span class="type-var">_</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> int</code></div><div class="doc"><p>Return the length (number of elements) of the given array.</p></div></div><div class="spec val" id="val-fold"><a href="#val-fold" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>fold : (<span class="type-var">'a</span> <span class="keyword">‑></span> <span class="type-var">'b</span> <span class="keyword">‑></span> <span class="type-var">'a</span>) <span class="keyword">‑></span> <span class="type-var">'a</span> <span class="keyword">‑></span> <span class="type-var">'b</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'a</span></code></div><div class="doc"><p><code class="code">fold f x a</code> computes <code class="code">f (... (f (f x a.(0)) a.(1)) ...) a.(n-1)</code>,
|
|
where <code class="code">n</code> is the length of the array <code class="code">a</code>.</p></div></div><div class="spec val" id="val-foldi"><a href="#val-foldi" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>foldi : (<span class="type-var">'a</span> <span class="keyword">‑></span> int <span class="keyword">‑></span> <span class="type-var">'b</span> <span class="keyword">‑></span> <span class="type-var">'a</span>) <span class="keyword">‑></span> <span class="type-var">'a</span> <span class="keyword">‑></span> <span class="type-var">'b</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'a</span></code></div><div class="doc"><p>Fold left on array, with index.</p></div></div><div class="spec val" id="val-fold_while"><a href="#val-fold_while" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>fold_while : (<span class="type-var">'a</span> <span class="keyword">‑></span> <span class="type-var">'b</span> <span class="keyword">‑></span> <span class="type-var">'a</span><span class="keyword"> * </span>[ `Stop | `Continue ]) <span class="keyword">‑></span> <span class="type-var">'a</span> <span class="keyword">‑></span> <span class="type-var">'b</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'a</span></code></div><div class="doc"><p>Fold left on array until a stop condition via <code class="code">('a, `Stop)</code> is
|
|
indicated by the accumulator.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.8</li></ul></div></div><div class="spec val" id="val-iter"><a href="#val-iter" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>iter : (<span class="type-var">'a</span> <span class="keyword">‑></span> unit) <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> unit</code></div><div class="doc"><p><code class="code">iter f a</code> applies function <code class="code">f</code> in turn to all
|
|
the elements of <code class="code">a</code>. It is equivalent to
|
|
<code class="code">f a.(0); f a.(1); ...; f a.(length a - 1); ()</code>.</p></div></div><div class="spec val" id="val-iteri"><a href="#val-iteri" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>iteri : (int <span class="keyword">‑></span> <span class="type-var">'a</span> <span class="keyword">‑></span> unit) <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> unit</code></div><div class="doc"><p>Like <span class="xref-unresolved" title="unresolved reference to "Array.iter"">Array.iter</span>, but the
|
|
function is applied with the index of the element as first argument,
|
|
and the element itself as second argument.</p></div></div><div class="spec val" id="val-blit"><a href="#val-blit" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>blit : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> int <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> int <span class="keyword">‑></span> int <span class="keyword">‑></span> unit</code></div><div class="doc"><p><code class="code">blit v1 o1 v2 o2 len</code> copies <code class="code">len</code> elements
|
|
from array <code class="code">v1</code>, starting at element number <code class="code">o1</code>, to array <code class="code">v2</code>,
|
|
starting at element number <code class="code">o2</code>. It works correctly even if
|
|
<code class="code">v1</code> and <code class="code">v2</code> are the same array, and the source and
|
|
destination chunks overlap.</p><p>Raise <code class="code">Invalid_argument "Array.blit"</code> if <code class="code">o1</code> and <code class="code">len</code> do not
|
|
designate a valid subarray of <code class="code">v1</code>, or if <code class="code">o2</code> and <code class="code">len</code> do not
|
|
designate a valid subarray of <code class="code">v2</code>.</p></div></div><div class="spec val" id="val-reverse_in_place"><a href="#val-reverse_in_place" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>reverse_in_place : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> unit</code></div><div class="doc"><p>Reverse the array in place.</p></div></div><div class="spec val" id="val-sorted"><a href="#val-sorted" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>sorted : (<span class="type-var">'a</span> <span class="keyword">‑></span> <span class="type-var">'a</span> <span class="keyword">‑></span> int) <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'a</span> array</code></div><div class="doc"><p><code class="code">sorted cmp a</code> makes a copy of <code class="code">a</code> and sorts it with <code class="code">cmp</code>.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 1.0</li></ul></div></div><div class="spec val" id="val-sort_indices"><a href="#val-sort_indices" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>sort_indices : (<span class="type-var">'a</span> <span class="keyword">‑></span> <span class="type-var">'a</span> <span class="keyword">‑></span> int) <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> int array</code></div><div class="doc"><p><code class="code">sort_indices cmp a</code> returns a new array <code class="code">b</code>, with the same length as <code class="code">a</code>,
|
|
such that <code class="code">b.(i)</code> is the index at which the <code class="code">i</code>-th element of <code class="code">sorted cmp a</code>
|
|
appears in <code class="code">a</code>. <code class="code">a</code> is not modified.</p><p>In other words, <code class="code">map (fun i -> a.(i)) (sort_indices cmp a) = sorted cmp a</code>.
|
|
<code class="code">sort_indices</code> yields the inverse permutation of <a href="index.html#val-sort_ranking">sort_ranking</a>.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 1.0</li></ul></div></div><div class="spec val" id="val-sort_ranking"><a href="#val-sort_ranking" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>sort_ranking : (<span class="type-var">'a</span> <span class="keyword">‑></span> <span class="type-var">'a</span> <span class="keyword">‑></span> int) <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> int array</code></div><div class="doc"><p><code class="code">sort_ranking cmp a</code> returns a new array <code class="code">b</code>, with the same length as <code class="code">a</code>,
|
|
such that <code class="code">b.(i)</code> is the index at which the <code class="code">i</code>-the element of <code class="code">a</code> appears
|
|
in <code class="code">sorted cmp a</code>. <code class="code">a</code> is not modified.</p><p>In other words, <code class="code">map (fun i -> (sorted cmp a).(i)) (sort_ranking cmp a) = a</code>.
|
|
<code class="code">sort_ranking</code> yields the inverse permutation of <a href="index.html#val-sort_indices">sort_indices</a>.</p><p>In the absence of duplicate elements in <code class="code">a</code>, we also have
|
|
<code class="code">lookup_exn a.(i) (sorted a) = (sorted_ranking a).(i)</code>.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 1.0</li></ul></div></div><div class="spec val" id="val-find"><a href="#val-find" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>find : (<span class="type-var">'a</span> <span class="keyword">‑></span> <span class="type-var">'b</span> option) <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'b</span> option</code></div><div class="doc"><p><code class="code">find f a</code> returns <code class="code">Some y</code> if there is an element <code class="code">x</code> such
|
|
that <code class="code">f x = Some y</code>, else it returns <code class="code">None</code>.</p></div></div><div class="spec val" id="val-findi"><a href="#val-findi" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>findi : (int <span class="keyword">‑></span> <span class="type-var">'a</span> <span class="keyword">‑></span> <span class="type-var">'b</span> option) <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'b</span> option</code></div><div class="doc"><p>Like <a href="index.html#val-find">find</a>, but also pass the index to the predicate function.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.3.4</li></ul></div></div><div class="spec val" id="val-find_idx"><a href="#val-find_idx" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>find_idx : (<span class="type-var">'a</span> <span class="keyword">‑></span> bool) <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> (int<span class="keyword"> * </span><span class="type-var">'a</span>) option</code></div><div class="doc"><p><code class="code">find_idx p x</code> returns <code class="code">Some (i,x)</code> where <code class="code">x</code> is the <code class="code">i</code>-th element of <code class="code">l</code>,
|
|
and <code class="code">p x</code> holds. Otherwise returns <code class="code">None</code>.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.3.4</li></ul></div></div><div class="spec val" id="val-lookup"><a href="#val-lookup" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>lookup : cmp:<span class="type-var">'a</span> <a href="index.html#type-ord">ord</a> <span class="keyword">‑></span> <span class="type-var">'a</span> <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> int option</code></div><div class="doc"><p>Lookup the index of some value in a sorted array.</p><ul class="at-tag"><li><span class="at-tag return">Returns</span> <code class="code">None</code> if the key is not present, or
|
|
<code class="code">Some i</code> (<code class="code">i</code> the index of the key) otherwise.</li></ul></div></div><div class="spec val" id="val-lookup_exn"><a href="#val-lookup_exn" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>lookup_exn : cmp:<span class="type-var">'a</span> <a href="index.html#type-ord">ord</a> <span class="keyword">‑></span> <span class="type-var">'a</span> <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> int</code></div><div class="doc"><p>Like <a href="index.html#val-lookup">lookup</a>, but</p><ul class="at-tag"><li><span class="at-tag raise">Raises</span> <span class="module-path">Not_found</span>: if the key is not present.</li></ul></div></div><div class="spec val" id="val-bsearch"><a href="#val-bsearch" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>bsearch : cmp:(<span class="type-var">'a</span> <span class="keyword">‑></span> <span class="type-var">'a</span> <span class="keyword">‑></span> int) <span class="keyword">‑></span> <span class="type-var">'a</span> <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> [ `All_lower | `All_bigger | `Just_after of int | `Empty | `At of int ]</code></div><div class="doc"><p><code class="code">bsearch ?cmp x arr</code> finds the index of the object <code class="code">x</code> in the array <code class="code">arr</code>,
|
|
provided <code class="code">arr</code> is <b>sorted</b> using <code class="code">cmp</code>. If the array is not sorted,
|
|
the result is not specified (may raise Invalid_argument).</p><p>Complexity: <code class="code">O(log n)</code> where n is the length of the array
|
|
(dichotomic search).</p><ul class="at-tag"><li><p><span class="at-tag return">Returns</span> </p><ul><li><code class="code">`At i</code> if <code class="code">cmp arr.(i) x = 0</code> (for some i).</li><li><code class="code">`All_lower</code> if all elements of <code class="code">arr</code> are lower than <code class="code">x</code>.</li><li><code class="code">`All_bigger</code> if all elements of <code class="code">arr</code> are bigger than <code class="code">x</code>.</li><li><code class="code">`Just_after i</code> if <code class="code">arr.(i) < x < arr.(i+1)</code>.</li><li><code class="code">`Empty</code> if the array is empty.</li></ul></li><li><span class="at-tag raise">Raises</span> <span class="module-path">Invalid_argument</span>: if the array is found to be unsorted w.r.t <code class="code">cmp</code>.</li><li><span class="at-tag since">Since</span>: 0.13</li></ul></div></div><div class="spec val" id="val-for_all"><a href="#val-for_all" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>for_all : (<span class="type-var">'a</span> <span class="keyword">‑></span> bool) <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> bool</code></div><div class="doc"><p><code class="code">for_all p [|a1; ...; an|]</code> checks if all elements of the array
|
|
satisfy the predicate <code class="code">p</code>. That is, it returns
|
|
<code class="code">(p a1) && (p a2) && ... && (p an)</code>.</p></div></div><div class="spec val" id="val-for_all2"><a href="#val-for_all2" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>for_all2 : (<span class="type-var">'a</span> <span class="keyword">‑></span> <span class="type-var">'b</span> <span class="keyword">‑></span> bool) <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'b</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> bool</code></div><div class="doc"><p>Forall on pairs of arrays.</p><ul class="at-tag"><li><span class="at-tag raise">Raises</span> <span class="module-path">Invalid_argument</span>: if they have distinct lengths.
|
|
Allow different types.</li><li><span class="at-tag since">Since</span>: 0.20</li></ul></div></div><div class="spec val" id="val-exists"><a href="#val-exists" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>exists : (<span class="type-var">'a</span> <span class="keyword">‑></span> bool) <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> bool</code></div><div class="doc"><p><code class="code">exists p [|a1; ...; an|]</code> checks if at least one element of
|
|
the array satisfies the predicate <code class="code">p</code>. That is, it returns
|
|
<code class="code">(p a1) || (p a2) || ... || (p an)</code>.</p></div></div><div class="spec val" id="val-exists2"><a href="#val-exists2" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>exists2 : (<span class="type-var">'a</span> <span class="keyword">‑></span> <span class="type-var">'b</span> <span class="keyword">‑></span> bool) <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'b</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> bool</code></div><div class="doc"><p>Exists on pairs of arrays.</p><ul class="at-tag"><li><span class="at-tag raise">Raises</span> <span class="module-path">Invalid_argument</span>: if they have distinct lengths.
|
|
Allow different types.</li><li><span class="at-tag since">Since</span>: 0.20</li></ul></div></div><div class="spec val" id="val-fold2"><a href="#val-fold2" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>fold2 : (<span class="type-var">'acc</span> <span class="keyword">‑></span> <span class="type-var">'a</span> <span class="keyword">‑></span> <span class="type-var">'b</span> <span class="keyword">‑></span> <span class="type-var">'acc</span>) <span class="keyword">‑></span> <span class="type-var">'acc</span> <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'b</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'acc</span></code></div><div class="doc"><p>Fold on two arrays stepwise.</p><ul class="at-tag"><li><span class="at-tag raise">Raises</span> <span class="module-path">Invalid_argument</span>: if they have distinct lengths.</li><li><span class="at-tag since">Since</span>: 0.20</li></ul></div></div><div class="spec val" id="val-iter2"><a href="#val-iter2" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>iter2 : (<span class="type-var">'a</span> <span class="keyword">‑></span> <span class="type-var">'b</span> <span class="keyword">‑></span> unit) <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'b</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> unit</code></div><div class="doc"><p>Iterate on two arrays stepwise.</p><ul class="at-tag"><li><span class="at-tag raise">Raises</span> <span class="module-path">Invalid_argument</span>: if they have distinct lengths.</li><li><span class="at-tag since">Since</span>: 0.20</li></ul></div></div><div class="spec val" id="val-shuffle"><a href="#val-shuffle" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>shuffle : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> unit</code></div><div class="doc"><p>Shuffle randomly the array, in place.</p></div></div><div class="spec val" id="val-shuffle_with"><a href="#val-shuffle_with" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>shuffle_with : Random.State.t <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> unit</code></div><div class="doc"><p>Like <a href="index.html#val-shuffle">shuffle</a> but using a specialized random state.</p></div></div><div class="spec val" id="val-random_choose"><a href="#val-random_choose" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>random_choose : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-random_gen">random_gen</a></code></div><div class="doc"><p>Choose an element randomly.</p><ul class="at-tag"><li><span class="at-tag raise">Raises</span> <span class="module-path">Not_found</span>: if the array/slice is empty.</li></ul></div></div><div class="spec val" id="val-to_seq"><a href="#val-to_seq" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>to_seq : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-sequence">sequence</a></code></div><div class="doc"><p>Return a <code class="code">sequence</code> of the elements of a slice.</p></div></div><div class="spec val" id="val-to_gen"><a href="#val-to_gen" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>to_gen : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-gen">gen</a></code></div><div class="doc"><p>Return a <code class="code">gen</code> of the elements of a slice.</p></div></div><div class="spec val" id="val-to_klist"><a href="#val-to_klist" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>to_klist : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-klist">klist</a></code></div><div class="doc"><p>Return a <code class="code">klist</code> of the elements of a slice.</p></div></div><h3>IO</h3><div class="spec val" id="val-pp"><a href="#val-pp" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>pp : ?⁠sep:string <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-printer">printer</a> <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <a href="index.html#type-printer">printer</a></code></div><div class="doc"><p>Print an array of items with printing function.</p></div></div><div class="spec val" id="val-pp_i"><a href="#val-pp_i" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>pp_i : ?⁠sep:string <span class="keyword">‑></span> (int <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-printer">printer</a>) <span class="keyword">‑></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <a href="index.html#type-printer">printer</a></code></div><div class="doc"><p>Print an array, giving the printing function both index and item.</p></div></div></body></html> |