mirror of
https://github.com/c-cube/ocaml-containers.git
synced 2025-12-06 11:15:31 -05:00
2 lines
No EOL
39 KiB
HTML
2 lines
No EOL
39 KiB
HTML
<!DOCTYPE html>
|
||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>CCSeq (containers.CCSeq)</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> » CCSeq</nav><h1>Module <code>CCSeq</code></h1><h2 id="helpers-for-the-standard-seq-type"><a href="#helpers-for-the-standard-seq-type" class="anchor"></a>Helpers for the standard <b>Seq</b> type</h2><p>See <a href="https://github.com/c-cube/oseq/">oseq</a> for a richer API.</p><nav class="toc"><ul><li><a href="#basics">Basics</a></li><li><a href="#operations-on-two-collections">Operations on two Collections</a></li><li><a href="#misc">Misc</a></li><li><a href="#fair-combinations">Fair Combinations</a></li><li><a href="#implementations">Implementations</a></li><li><a href="#infix-operators">Infix operators</a></li><li><a href="#conversions">Conversions</a></li><li><a href="#io">IO</a></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><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-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="basics"><a href="#basics" class="anchor"></a>Basics</h3></header><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> = unit <span>-></span> <span><span class="type-var">'a</span> <a href="index.html#type-node">node</a></span></code></dt><dt class="spec type" id="type-node"><a href="#type-node" class="anchor"></a><code><span class="keyword">and</span> <span>+'a node</span></code><code> = <span><span class="type-var">'a</span> Stdlib.Seq.node</span></code><code> = </code><table class="variant"><tr id="type-node.Nil" class="anchored"><td class="def constructor"><a href="#type-node.Nil" class="anchor"></a><code>| </code><code><span class="constructor">Nil</span></code></td></tr><tr id="type-node.Cons" class="anchored"><td class="def constructor"><a href="#type-node.Cons" class="anchor"></a><code>| </code><code><span class="constructor">Cons</span> <span class="keyword">of</span> <span class="type-var">'a</span> * <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span></code></td></tr></table></dt></dl><dl><dt class="spec value" id="val-nil"><a href="#val-nil" class="anchor"></a><code><span class="keyword">val</span> nil : <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span></code></dt><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><dt class="spec value" id="val-cons"><a href="#val-cons" class="anchor"></a><code><span class="keyword">val</span> cons : <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> <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span></code></dt><dt class="spec value" id="val-singleton"><a href="#val-singleton" class="anchor"></a><code><span class="keyword">val</span> singleton : <span class="type-var">'a</span> <span>-></span> <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span></code></dt><dt class="spec value" id="val-repeat"><a href="#val-repeat" class="anchor"></a><code><span class="keyword">val</span> repeat : <span>?⁠n:int</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></code></dt><dd><p><code>repeat ~n x</code> repeats <code>x</code> <code>n</code> times then stops. If <code>n</code> is omitted, then <code>x</code> is repeated forever.</p><dl><dt>since</dt><dd>0.3.3</dd></dl></dd></dl><dl><dt class="spec value" id="val-cycle"><a href="#val-cycle" class="anchor"></a><code><span class="keyword">val</span> cycle : <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>Cycle through the iterator infinitely. The iterator shouldn't be empty.</p><dl><dt>since</dt><dd>0.3.3</dd></dl></dd></dl><dl><dt class="spec value" id="val-unfold"><a href="#val-unfold" class="anchor"></a><code><span class="keyword">val</span> unfold : <span>(<span class="type-var">'b</span> <span>-></span> <span><span>(<span class="type-var">'a</span> * <span class="type-var">'b</span>)</span> option</span>)</span> <span>-></span> <span class="type-var">'b</span> <span>-></span> <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p><code>unfold f acc</code> calls <code>f acc</code> and:</p><ul><li>if <code>f acc = Some (x, acc')</code>, yield <code>x</code>, continue with <code>unfold f acc'</code>.</li><li>if <code>f acc = None</code>, stops.</li></ul><dl><dt>since</dt><dd>0.13</dd></dl></dd></dl><dl><dt class="spec value" id="val-is_empty"><a href="#val-is_empty" class="anchor"></a><code><span class="keyword">val</span> is_empty : <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span> <span>-></span> bool</code></dt><dt class="spec value" id="val-head"><a href="#val-head" class="anchor"></a><code><span class="keyword">val</span> head : <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> option</span></code></dt><dd><p>Head of the list.</p><dl><dt>since</dt><dd>0.13</dd></dl></dd></dl><dl><dt class="spec value" id="val-head_exn"><a href="#val-head_exn" class="anchor"></a><code><span class="keyword">val</span> head_exn : <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span> <span>-></span> <span class="type-var">'a</span></code></dt><dd><p>Unsafe version of <a href="index.html#val-head"><code>head</code></a>.</p><dl><dt>raises Not_found</dt><dd><p>if the list is empty.</p></dd></dl><dl><dt>since</dt><dd>0.13</dd></dl></dd></dl><dl><dt class="spec value" id="val-tail"><a href="#val-tail" class="anchor"></a><code><span class="keyword">val</span> tail : <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span> <span>-></span> <span><span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span> option</span></code></dt><dd><p>Tail of the list.</p><dl><dt>since</dt><dd>0.13</dd></dl></dd></dl><dl><dt class="spec value" id="val-tail_exn"><a href="#val-tail_exn" class="anchor"></a><code><span class="keyword">val</span> tail_exn : <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>Unsafe version of <a href="index.html#val-tail"><code>tail</code></a>.</p><dl><dt>raises Not_found</dt><dd><p>if the list is empty.</p></dd></dl><dl><dt>since</dt><dd>0.13</dd></dl></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>Equality step by step. Eager.</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>Lexicographic comparison. Eager.</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 : <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 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 class="type-var">'a</span></code></dt><dd><p>Fold on values.</p></dd></dl><dl><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>(<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 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 class="type-var">'a</span></code></dt><dd><p>Alias for <a href="index.html#val-fold"><code>fold</code></a></p></dd></dl><dl><dt class="spec value" id="val-iter"><a href="#val-iter" class="anchor"></a><code><span class="keyword">val</span> iter : <span>(<span class="type-var">'a</span> <span>-></span> unit)</span> <span>-></span> <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></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>(int <span>-></span> <span class="type-var">'a</span> <span>-></span> unit)</span> <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>Iterate with index (starts at 0).</p><dl><dt>since</dt><dd>0.13</dd></dl></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><span class="type-var">_</span> <a href="index.html#type-t">t</a></span> <span>-></span> int</code></dt><dd><p>Number of elements in the list. Will not terminate if the list if infinite: use (for instance) <a href="index.html#val-take"><code>take</code></a> to make the list finite if necessary.</p></dd></dl><dl><dt class="spec value" id="val-take"><a href="#val-take" class="anchor"></a><code><span class="keyword">val</span> take : int <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><dt class="spec value" id="val-take_while"><a href="#val-take_while" class="anchor"></a><code><span class="keyword">val</span> take_while : <span>(<span class="type-var">'a</span> <span>-></span> bool)</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><dt class="spec value" id="val-drop"><a href="#val-drop" class="anchor"></a><code><span class="keyword">val</span> drop : int <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><dt class="spec value" id="val-drop_while"><a href="#val-drop_while" class="anchor"></a><code><span class="keyword">val</span> drop_while : <span>(<span class="type-var">'a</span> <span>-></span> bool)</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><dt class="spec value" id="val-map"><a href="#val-map" class="anchor"></a><code><span class="keyword">val</span> map : <span>(<span class="type-var">'a</span> <span>-></span> <span class="type-var">'b</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><dt class="spec value" id="val-mapi"><a href="#val-mapi" class="anchor"></a><code><span class="keyword">val</span> mapi : <span>(int <span>-></span> <span class="type-var">'a</span> <span>-></span> <span class="type-var">'b</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>Map with index (starts at 0).</p><dl><dt>since</dt><dd>0.13</dd></dl></dd></dl><dl><dt class="spec value" id="val-fmap"><a href="#val-fmap" class="anchor"></a><code><span class="keyword">val</span> fmap : <span>(<span class="type-var">'a</span> <span>-></span> <span><span class="type-var">'b</span> option</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><dt class="spec value" id="val-filter"><a href="#val-filter" class="anchor"></a><code><span class="keyword">val</span> filter : <span>(<span class="type-var">'a</span> <span>-></span> bool)</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><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> <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> <span>-></span> <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span></code></dt><dt class="spec value" id="val-product_with"><a href="#val-product_with" class="anchor"></a><code><span class="keyword">val</span> product_with : <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 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>Fair product of two (possibly infinite) lists into a new list. Lazy. The first parameter is used to combine each pair of elements.</p><dl><dt>since</dt><dd>0.3.3</dd></dl></dd></dl><dl><dt class="spec value" id="val-product"><a href="#val-product" class="anchor"></a><code><span class="keyword">val</span> product : <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>(<span class="type-var">'a</span> * <span class="type-var">'b</span>)</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p>Specialization of <a href="index.html#val-product_with"><code>product_with</code></a> producing tuples.</p><dl><dt>since</dt><dd>0.3.3</dd></dl></dd></dl><dl><dt class="spec value" id="val-group"><a href="#val-group" class="anchor"></a><code><span class="keyword">val</span> group : <span><span class="type-var">'a</span> <a href="index.html#type-equal">equal</a></span> <span>-></span> <span><span class="type-var">'a</span> <a href="index.html#type-t">t</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-t">t</a></span></code></dt><dd><p><code>group eq l</code> groups together consecutive elements that satisfy <code>eq</code>. Lazy. For instance <code>group (=) [1;1;1;2;2;3;3;1]</code> yields <code>[1;1;1]; [2;2]; [3;3]; [1]</code>.</p><dl><dt>since</dt><dd>0.3.3</dd></dl></dd></dl><dl><dt class="spec value" id="val-uniq"><a href="#val-uniq" class="anchor"></a><code><span class="keyword">val</span> uniq : <span><span class="type-var">'a</span> <a href="index.html#type-equal">equal</a></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>uniq eq l</code> returns <code>l</code> but removes consecutive duplicates. Lazy. In other words, if several values that are equal follow one another, only the first of them is kept.</p><dl><dt>since</dt><dd>0.3.3</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 : <span>(<span class="type-var">'a</span> <span>-></span> bool)</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>for_all p [a1; ...; an]</code> checks if all elements of the sequence satisfy the predicate <code>p</code>. That is, it returns <code>(p a1) && ... && (p an)</code> for a non-empty list and <code>true</code> if the sequence is empty. It consumes the sequence until it finds an element not satisfying the predicate.</p><dl><dt>since</dt><dd>3.3</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 : <span>(<span class="type-var">'a</span> <span>-></span> bool)</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>exists p [a1; ...; an]</code> checks if at least one element of the sequence satisfies the predicate <code>p</code>. That is, it returns <code>(p a1) || ... || (p an)</code> for a non-empty sequence and <code>false</code> if the list is empty. It consumes the sequence until it finds an element satisfying the predicate.</p><dl><dt>since</dt><dd>3.3</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>(<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">'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><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>(<span class="type-var">'a</span> <span>-></span> <span><span class="type-var">'b</span> option</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><dt class="spec value" id="val-flatten"><a href="#val-flatten" class="anchor"></a><code><span class="keyword">val</span> flatten : <span><span><span class="type-var">'a</span> <a href="index.html#type-t">t</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><dt class="spec value" id="val-range"><a href="#val-range" class="anchor"></a><code><span class="keyword">val</span> range : int <span>-></span> int <span>-></span> <span>int <a href="index.html#type-t">t</a></span></code></dt><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>a -- b</code> is the range of integers containing <code>a</code> and <code>b</code> (therefore, never empty).</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>a -- b</code> is the integer range from <code>a</code> to <code>b</code>, where <code>b</code> is excluded.</p><dl><dt>since</dt><dd>0.17</dd></dl></dd></dl></section><section><header><h3 id="operations-on-two-collections"><a href="#operations-on-two-collections" class="anchor"></a>Operations on two Collections</h3></header><dl><dt class="spec value" id="val-fold2"><a href="#val-fold2" class="anchor"></a><code><span class="keyword">val</span> fold2 : <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 class="type-var">'acc</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>Fold on two collections at once. Stop at soon as one of them ends.</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>(<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 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>Map on two collections at once. Stop as soon as one of the arguments is exhausted.</p></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>(<span class="type-var">'a</span> <span>-></span> <span class="type-var">'b</span> <span>-></span> unit)</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>Iterate on two collections at once. Stop as soon as one of them ends.</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 : <span>(<span class="type-var">'a</span> <span>-></span> <span class="type-var">'b</span> <span>-></span> bool)</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><dt class="spec value" id="val-exists2"><a href="#val-exists2" class="anchor"></a><code><span class="keyword">val</span> exists2 : <span>(<span class="type-var">'a</span> <span>-></span> <span class="type-var">'b</span> <span>-></span> bool)</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><dt class="spec value" id="val-merge"><a href="#val-merge" class="anchor"></a><code><span class="keyword">val</span> merge : <span><span class="type-var">'a</span> <a href="index.html#type-ord">ord</a></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> <span>-></span> <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p>Merge two sorted iterators into a sorted iterator.</p></dd></dl><dl><dt class="spec value" id="val-zip"><a href="#val-zip" class="anchor"></a><code><span class="keyword">val</span> zip : <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>(<span class="type-var">'a</span> * <span class="type-var">'b</span>)</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p>Combine elements pairwise. Stop as soon as one of the lists stops.</p><dl><dt>since</dt><dd>0.13</dd></dl></dd></dl><dl><dt class="spec value" id="val-unzip"><a href="#val-unzip" class="anchor"></a><code><span class="keyword">val</span> unzip : <span><span>(<span class="type-var">'a</span> * <span class="type-var">'b</span>)</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> * <span><span class="type-var">'b</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p>Split each tuple in the list.</p><dl><dt>since</dt><dd>0.13</dd></dl></dd></dl></section><section><header><h3 id="misc"><a href="#misc" class="anchor"></a>Misc</h3></header><dl><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> <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> <span>-></span> <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p>Eager sort. Require the iterator to be finite. <code>O(n ln(n))</code> time and space.</p><dl><dt>since</dt><dd>0.3.3</dd></dl></dd></dl><dl><dt class="spec value" id="val-sort_uniq"><a href="#val-sort_uniq" class="anchor"></a><code><span class="keyword">val</span> sort_uniq : <span>cmp:<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> <span>-></span> <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p>Eager sort that removes duplicate values. Require the iterator to be finite. <code>O(n ln(n))</code> time and space.</p><dl><dt>since</dt><dd>0.3.3</dd></dl></dd></dl><dl><dt class="spec value" id="val-memoize"><a href="#val-memoize" class="anchor"></a><code><span class="keyword">val</span> memoize : <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>Avoid recomputations by caching intermediate results.</p><dl><dt>since</dt><dd>0.14</dd></dl></dd></dl></section><section><header><h3 id="fair-combinations"><a href="#fair-combinations" class="anchor"></a>Fair Combinations</h3></header><dl><dt class="spec value" id="val-interleave"><a href="#val-interleave" class="anchor"></a><code><span class="keyword">val</span> interleave : <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> <span>-></span> <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p>Fair interleaving of both streams.</p><dl><dt>since</dt><dd>0.13</dd></dl></dd></dl><dl><dt class="spec value" id="val-fair_flat_map"><a href="#val-fair_flat_map" class="anchor"></a><code><span class="keyword">val</span> fair_flat_map : <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">'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>Fair version of <a href="index.html#val-flat_map"><code>flat_map</code></a>.</p><dl><dt>since</dt><dd>0.13</dd></dl></dd></dl><dl><dt class="spec value" id="val-fair_app"><a href="#val-fair_app" class="anchor"></a><code><span class="keyword">val</span> fair_app : <span><span>(<span class="type-var">'a</span> <span>-></span> <span class="type-var">'b</span>)</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> <span>-></span> <span><span class="type-var">'b</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p>Fair version of <a href="index.html#val-(<*>)"><code>(<*>)</code></a>.</p><dl><dt>since</dt><dd>0.13</dd></dl></dd></dl></section><section><header><h3 id="implementations"><a href="#implementations" class="anchor"></a>Implementations</h3><dl><dt>since</dt><dd>0.3.3</dd></dl></header><dl><dt class="spec value" id="val-return"><a href="#val-return" class="anchor"></a><code><span class="keyword">val</span> return : <span class="type-var">'a</span> <span>-></span> <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span></code></dt><dt class="spec value" id="val-pure"><a href="#val-pure" class="anchor"></a><code><span class="keyword">val</span> pure : <span class="type-var">'a</span> <span>-></span> <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span></code></dt><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><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><dt class="spec value" id="val-(<*>)"><a href="#val-(<*>)" class="anchor"></a><code><span class="keyword">val</span> (<*>) : <span><span>(<span class="type-var">'a</span> <span>-></span> <span class="type-var">'b</span>)</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> <span>-></span> <span><span class="type-var">'b</span> <a href="index.html#type-t">t</a></span></code></dt><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>Infix version of <a href="index.html#val-fair_flat_map"><code>fair_flat_map</code></a>.</p><dl><dt>since</dt><dd>0.13</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>(<span class="type-var">'a</span> <span>-></span> <span class="type-var">'b</span>)</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> <span>-></span> <span><span class="type-var">'b</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p>Infix version of <a href="index.html#val-fair_app"><code>fair_app</code></a>.</p><dl><dt>since</dt><dd>0.13</dd></dl></dd></dl></section><section><header><h3 id="infix-operators"><a href="#infix-operators" class="anchor"></a>Infix operators</h3><dl><dt>since</dt><dd>0.17</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><dl><dt class="spec module-type" id="module-type-MONAD"><a href="#module-type-MONAD" class="anchor"></a><code><span class="keyword">module</span> <span class="keyword">type</span> <a href="module-type-MONAD/index.html">MONAD</a> = <span class="keyword">sig</span> ... <span class="keyword">end</span></code></dt><dd></dd></dl><div class="spec module" id="module-Traverse"><a href="#module-Traverse" class="anchor"></a><code><span class="keyword">module</span> <a href="Traverse/index.html">Traverse</a> : <span class="keyword">functor</span> (<a href="Traverse/argument-1-M/index.html">M</a> : <a href="index.html#module-type-MONAD">MONAD</a>) <span>-></span> <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div></section><section><header><h3 id="conversions"><a href="#conversions" class="anchor"></a>Conversions</h3></header><dl><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> <a href="index.html#type-t">t</a></span></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> <a href="index.html#type-t">t</a></span> <span>-></span> <span><span class="type-var">'a</span> list</span></code></dt><dd><p>Gather all values into a list.</p></dd></dl><dl><dt class="spec value" id="val-of_array"><a href="#val-of_array" class="anchor"></a><code><span class="keyword">val</span> of_array : <span><span class="type-var">'a</span> array</span> <span>-></span> <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p>Iterate on the array.</p><dl><dt>since</dt><dd>0.13</dd></dl></dd></dl><dl><dt class="spec value" id="val-to_array"><a href="#val-to_array" class="anchor"></a><code><span class="keyword">val</span> to_array : <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>Convert into array. Iterate twice.</p><dl><dt>since</dt><dd>0.13</dd></dl></dd></dl><dl><dt class="spec value" id="val-to_rev_list"><a href="#val-to_rev_list" class="anchor"></a><code><span class="keyword">val</span> to_rev_list : <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> list</span></code></dt><dd><p>Convert to a list, in reverse order. More efficient than <a href="index.html#val-to_list"><code>to_list</code></a>.</p></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><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><dt class="spec value" id="val-of_gen"><a href="#val-of_gen" class="anchor"></a><code><span class="keyword">val</span> of_gen : <span><span class="type-var">'a</span> <a href="index.html#type-gen">gen</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>of_gen g</code> consumes the generator and caches intermediate results.</p><dl><dt>since</dt><dd>0.13</dd></dl></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 s</code> formats the sequence <code>s</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></section></div></body></html> |