mirror of
https://github.com/c-cube/moonpool.git
synced 2025-12-06 03:05:30 -05:00
2 lines
22 KiB
HTML
2 lines
22 KiB
HTML
<!DOCTYPE html>
|
||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Lwt_seq (lwt.Lwt_seq)</title><meta charset="utf-8"/><link rel="stylesheet" href="../../_odoc-theme/odoc.css"/><meta name="generator" content="odoc 3.1.0"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><script src="../../highlight.pack.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body class="odoc"><nav class="odoc-nav"><a href="../index.html">Up</a> – <a href="../../index.html">Index</a> » <a href="../index.html">lwt</a> » Lwt_seq</nav><header class="odoc-preamble"><h1>Module <code><span>Lwt_seq</span></code></h1><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 5.5.0</li></ul></header><div class="odoc-content"><div class="odoc-spec"><div class="spec type anchored" id="type-t"><a href="#type-t" class="anchor"></a><code><span><span class="keyword">type</span> <span>'a t</span></span><span> = <span>unit <span class="arrow">-></span></span> <span><span><span class="type-var">'a</span> <a href="#type-node">node</a></span> <a href="../Lwt/index.html#type-t">Lwt.t</a></span></span></code></div><div class="spec-doc"><p>The type of delayed lists containing elements of type <code>'a</code>. Note that the concrete list node <code>'a node</code> is delayed under a closure, not a <code>lazy</code> block, which means it might be recomputed every time we access it.</p></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-node"><a href="#type-node" class="anchor"></a><code><span><span class="keyword">and</span> <span>+'a node</span></span><span> = </span></code><ol><li id="type-node.Nil" class="def variant constructor anchored"><a href="#type-node.Nil" class="anchor"></a><code><span>| </span><span><span class="constructor">Nil</span></span></code></li><li id="type-node.Cons" class="def variant constructor anchored"><a href="#type-node.Cons" class="anchor"></a><code><span>| </span><span><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="#type-t">t</a></span></span></code><div class="def-doc"><span class="comment-delim">(*</span><p>A fully-evaluated list node, either empty or containing an element and a delayed tail.</p><span class="comment-delim">*)</span></div></li></ol></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-empty"><a href="#val-empty" class="anchor"></a><code><span><span class="keyword">val</span> empty : <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p>The empty sequence, containing no elements.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-return"><a href="#val-return" class="anchor"></a><code><span><span class="keyword">val</span> return : <span><span class="type-var">'a</span> <span class="arrow">-></span></span> <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p>The singleton sequence containing only the given element.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-return_lwt"><a href="#val-return_lwt" class="anchor"></a><code><span><span class="keyword">val</span> return_lwt : <span><span><span class="type-var">'a</span> <a href="../Lwt/index.html#type-t">Lwt.t</a></span> <span class="arrow">-></span></span> <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p>The singleton sequence containing only the given promised element.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-cons"><a href="#val-cons" class="anchor"></a><code><span><span class="keyword">val</span> cons : <span><span class="type-var">'a</span> <span class="arrow">-></span></span> <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>cons x xs</code> is the sequence containing the element <code>x</code> followed by the sequence <code>xs</code></p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-cons_lwt"><a href="#val-cons_lwt" class="anchor"></a><code><span><span class="keyword">val</span> cons_lwt : <span><span><span class="type-var">'a</span> <a href="../Lwt/index.html#type-t">Lwt.t</a></span> <span class="arrow">-></span></span> <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>cons x xs</code> is the sequence containing the element promised by <code>x</code> followed by the sequence <code>xs</code></p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-append"><a href="#val-append" class="anchor"></a><code><span><span class="keyword">val</span> append : <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>append xs ys</code> is the sequence <code>xs</code> followed by the sequence <code>ys</code></p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-map"><a href="#val-map" class="anchor"></a><code><span><span class="keyword">val</span> map : <span><span>(<span><span class="type-var">'a</span> <span class="arrow">-></span></span> <span class="type-var">'b</span>)</span> <span class="arrow">-></span></span> <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span><span class="type-var">'b</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>map f seq</code> returns a new sequence whose elements are the elements of <code>seq</code>, transformed by <code>f</code>. This transformation is lazy, it only applies when the result is traversed.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-map_s"><a href="#val-map_s" class="anchor"></a><code><span><span class="keyword">val</span> map_s : <span><span>(<span><span class="type-var">'a</span> <span class="arrow">-></span></span> <span><span class="type-var">'b</span> <a href="../Lwt/index.html#type-t">Lwt.t</a></span>)</span> <span class="arrow">-></span></span> <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span><span class="type-var">'b</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>map_s f seq</code> is like <code>map f seq</code> but <code>f</code> is a function that returns a promise.</p><p>Note that there is no concurrency between the promises from the underlying sequence <code>seq</code> and the promises from applying the function <code>f</code>. In other words, the next promise-element of the underlying sequence (<code>seq</code>) is only created when the current promise-element of the returned sequence (as mapped by <code>f</code>) has resolved. This scheduling is true for all the <code>_s</code> functions of this module.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-filter"><a href="#val-filter" class="anchor"></a><code><span><span class="keyword">val</span> filter : <span><span>(<span><span class="type-var">'a</span> <span class="arrow">-></span></span> bool)</span> <span class="arrow">-></span></span> <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p>Remove from the sequence the elements that do not satisfy the given predicate. This transformation is lazy, it only applies when the result is traversed.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-filter_s"><a href="#val-filter_s" class="anchor"></a><code><span><span class="keyword">val</span> filter_s : <span><span>(<span><span class="type-var">'a</span> <span class="arrow">-></span></span> <span>bool <a href="../Lwt/index.html#type-t">Lwt.t</a></span>)</span> <span class="arrow">-></span></span> <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>filter_s</code> is like <code>filter</code> but the predicate returns a promise.</p><p>See <a href="#val-map_s"><code>map_s</code></a> for additional details about scheduling.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-filter_map"><a href="#val-filter_map" class="anchor"></a><code><span><span class="keyword">val</span> filter_map : <span><span>(<span><span class="type-var">'a</span> <span class="arrow">-></span></span> <span><span class="type-var">'b</span> option</span>)</span> <span class="arrow">-></span></span> <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span><span class="type-var">'b</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p>Apply the function to every element; if <code>f x = None</code> then <code>x</code> is dropped; if <code>f x = Some y</code> then <code>y</code> is returned. This transformation is lazy, it only applies when the result is traversed.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-filter_map_s"><a href="#val-filter_map_s" class="anchor"></a><code><span><span class="keyword">val</span> filter_map_s : <span><span>(<span><span class="type-var">'a</span> <span class="arrow">-></span></span> <span><span><span class="type-var">'b</span> option</span> <a href="../Lwt/index.html#type-t">Lwt.t</a></span>)</span> <span class="arrow">-></span></span> <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span><span class="type-var">'b</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>filter_map_s</code> is like <code>filter</code> but the predicate returns a promise.</p><p>See <a href="#val-map_s"><code>map_s</code></a> for additional details about scheduling.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-flat_map"><a href="#val-flat_map" class="anchor"></a><code><span><span class="keyword">val</span> flat_map : <span><span>(<span><span class="type-var">'a</span> <span class="arrow">-></span></span> <span><span class="type-var">'b</span> <a href="#type-t">t</a></span>)</span> <span class="arrow">-></span></span> <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span><span class="type-var">'b</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p>Map each element to a subsequence, then return each element of this sub-sequence in turn. This transformation is lazy, it only applies when the result is traversed.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-fold_left"><a href="#val-fold_left" class="anchor"></a><code><span><span class="keyword">val</span> fold_left : <span><span>(<span><span class="type-var">'a</span> <span class="arrow">-></span></span> <span><span class="type-var">'b</span> <span class="arrow">-></span></span> <span class="type-var">'a</span>)</span> <span class="arrow">-></span></span> <span><span class="type-var">'a</span> <span class="arrow">-></span></span> <span><span><span class="type-var">'b</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span><span class="type-var">'a</span> <a href="../Lwt/index.html#type-t">Lwt.t</a></span></span></code></div><div class="spec-doc"><p>Traverse the sequence from left to right, combining each element with the accumulator using the given function. The traversal happens immediately and will not terminate (i.e., the promise will not resolve) on infinite sequences.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-fold_left_s"><a href="#val-fold_left_s" class="anchor"></a><code><span><span class="keyword">val</span> fold_left_s : <span><span>(<span><span class="type-var">'a</span> <span class="arrow">-></span></span> <span><span class="type-var">'b</span> <span class="arrow">-></span></span> <span><span class="type-var">'a</span> <a href="../Lwt/index.html#type-t">Lwt.t</a></span>)</span> <span class="arrow">-></span></span> <span><span class="type-var">'a</span> <span class="arrow">-></span></span> <span><span><span class="type-var">'b</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span><span class="type-var">'a</span> <a href="../Lwt/index.html#type-t">Lwt.t</a></span></span></code></div><div class="spec-doc"><p><code>fold_left_s</code> is like <code>fold_left</code> but the function returns a promise.</p><p>See <a href="#val-map_s"><code>map_s</code></a> for additional details about scheduling.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-iter"><a href="#val-iter" class="anchor"></a><code><span><span class="keyword">val</span> iter : <span><span>(<span><span class="type-var">'a</span> <span class="arrow">-></span></span> unit)</span> <span class="arrow">-></span></span> <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span>unit <a href="../Lwt/index.html#type-t">Lwt.t</a></span></span></code></div><div class="spec-doc"><p>Iterate on the sequence, calling the (imperative) function on every element.</p><p>The sequence's next node is evaluated only once the function has finished processing the current element. More formally: the promise for the <code>n+1</code>th node of the sequence is created only once the promise returned by <code>f</code> on the <code>n</code>th element of the sequence has resolved.</p><p>The traversal happens immediately and will not terminate (i.e., the promise will not resolve) on infinite sequences.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-iter_s"><a href="#val-iter_s" class="anchor"></a><code><span><span class="keyword">val</span> iter_s : <span><span>(<span><span class="type-var">'a</span> <span class="arrow">-></span></span> <span>unit <a href="../Lwt/index.html#type-t">Lwt.t</a></span>)</span> <span class="arrow">-></span></span> <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span>unit <a href="../Lwt/index.html#type-t">Lwt.t</a></span></span></code></div><div class="spec-doc"><p><code>iter_s</code> is like <code>iter</code> but the function returns a promise.</p><p>See <a href="#val-map_s"><code>map_s</code></a> for additional details about scheduling.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-iter_p"><a href="#val-iter_p" class="anchor"></a><code><span><span class="keyword">val</span> iter_p : <span><span>(<span><span class="type-var">'a</span> <span class="arrow">-></span></span> <span>unit <a href="../Lwt/index.html#type-t">Lwt.t</a></span>)</span> <span class="arrow">-></span></span> <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span>unit <a href="../Lwt/index.html#type-t">Lwt.t</a></span></span></code></div><div class="spec-doc"><p>Iterate on the sequence, calling the (imperative) function on every element.</p><p>The sequence's next node is evaluated as soon as the previous node is resolved.</p><p>The traversal happens immediately and will not terminate (i.e., the promise will not resolve) on infinite sequences.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-iter_n"><a href="#val-iter_n" class="anchor"></a><code><span><span class="keyword">val</span> iter_n : <span><span class="optlabel">?max_concurrency</span>:int <span class="arrow">-></span></span> <span><span>(<span><span class="type-var">'a</span> <span class="arrow">-></span></span> <span>unit <a href="../Lwt/index.html#type-t">Lwt.t</a></span>)</span> <span class="arrow">-></span></span> <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span>unit <a href="../Lwt/index.html#type-t">Lwt.t</a></span></span></code></div><div class="spec-doc"><p><code>iter_n ~max_concurrency f s</code></p><p>Iterates on the sequence <code>s</code>, calling the (imperative) function <code>f</code> on every element.</p><p>The sum total of unresolved promises returned by <code>f</code> never exceeds <code>max_concurrency</code>. Node suspensions are evaluated only when there is capacity for <code>f</code>-promises to be evaluated. Consequently, there might be significantly fewer than <code>max_concurrency</code> promises being evaluated concurrently; especially if the node suspensions take longer to evaluate than the <code>f</code>-promises.</p><p>The traversal happens immediately and will not terminate (i.e., the promise will not resolve) on infinite sequences.</p><ul class="at-tags"><li class="parameter"><span class="at-tag">parameter</span> <span class="value">max_concurrency</span> <p>defaults to <code>1</code>.</p></li></ul><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <code>Invalid_argument</code> <p>if <code>max_concurrency < 1</code>.</p></li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-unfold"><a href="#val-unfold" class="anchor"></a><code><span><span class="keyword">val</span> unfold : <span><span>(<span><span class="type-var">'b</span> <span class="arrow">-></span></span> <span><span>(<span class="type-var">'a</span> * <span class="type-var">'b</span>)</span> option</span>)</span> <span class="arrow">-></span></span> <span><span class="type-var">'b</span> <span class="arrow">-></span></span> <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p>Build a sequence from a step function and an initial value. <code>unfold f u</code> returns <code>empty</code> if the promise <code>f u</code> resolves to <code>None</code>, or <code>fun () -> Lwt.return (Cons (x, unfold f y))</code> if the promise <code>f u</code> resolves to <code>Some (x, y)</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-unfold_lwt"><a href="#val-unfold_lwt" class="anchor"></a><code><span><span class="keyword">val</span> unfold_lwt : <span><span>(<span><span class="type-var">'b</span> <span class="arrow">-></span></span> <span><span><span>(<span class="type-var">'a</span> * <span class="type-var">'b</span>)</span> option</span> <a href="../Lwt/index.html#type-t">Lwt.t</a></span>)</span> <span class="arrow">-></span></span> <span><span class="type-var">'b</span> <span class="arrow">-></span></span> <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>unfold_lwt</code> is like <code>unfold</code> but the step function returns a promise.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-to_list"><a href="#val-to_list" class="anchor"></a><code><span><span class="keyword">val</span> to_list : <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span><span><span class="type-var">'a</span> list</span> <a href="../Lwt/index.html#type-t">Lwt.t</a></span></span></code></div><div class="spec-doc"><p>Convert a sequence to a list, preserving order. The traversal happens immediately and will not terminate (i.e., the promise will not resolve) on infinite sequences.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-of_list"><a href="#val-of_list" class="anchor"></a><code><span><span class="keyword">val</span> of_list : <span><span><span class="type-var">'a</span> list</span> <span class="arrow">-></span></span> <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p>Convert a list to a sequence, preserving order.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-of_seq"><a href="#val-of_seq" class="anchor"></a><code><span><span class="keyword">val</span> of_seq : <span><span><span class="type-var">'a</span> <a href="../../ocaml/Stdlib/Seq/index.html#type-t">Stdlib.Seq.t</a></span> <span class="arrow">-></span></span> <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p>Convert from <code>'a Stdlib.Seq.t</code> to <code>'a Lwt_seq.t</code>. This transformation is lazy, it only applies when the result is traversed.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-of_seq_lwt"><a href="#val-of_seq_lwt" class="anchor"></a><code><span><span class="keyword">val</span> of_seq_lwt : <span><span><span><span class="type-var">'a</span> <a href="../Lwt/index.html#type-t">Lwt.t</a></span> <a href="../../ocaml/Stdlib/Seq/index.html#type-t">Stdlib.Seq.t</a></span> <span class="arrow">-></span></span> <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p>Convert from <code>'a Lwt.t Stdlib.Seq.t</code> to <code>'a Lwt_seq.t</code>. This transformation is lazy, it only applies when the result is traversed.</p></div></div></div></body></html>
|