mirror of
https://github.com/c-cube/moonpool.git
synced 2025-12-06 03:05:30 -05:00
2 lines
18 KiB
HTML
2 lines
18 KiB
HTML
<!DOCTYPE html>
|
||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Lwt_sequence (lwt.Lwt_sequence)</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_sequence</nav><header class="odoc-preamble"><h1>Module <code><span>Lwt_sequence</span></code></h1><p>Mutable sequence of elements (deprecated)</p></header><div class="odoc-tocs"><nav class="odoc-toc odoc-local-toc"><ul><li><a href="#operation-on-nodes">Operation on nodes</a></li><li><a href="#operations-on-sequence">Operations on sequence</a></li><li><a href="#sequence-iterators">Sequence iterators</a></li></ul></nav></div><div class="odoc-content"><p>A sequence is an object holding a list of elements which support the following operations:</p><ul><li>adding an element to the left or the right in time and space O(1)</li><li>taking an element from the left or the right in time and space O(1)</li><li>removing a previously added element from a sequence in time and space O(1)</li><li>removing an element while the sequence is being transversed.</li></ul><ul class="at-tags"><li class="deprecated"><span class="at-tag">deprecated</span> <p>This module should be an internal implementation detail of Lwt, and may be removed from the API at some point in the future. Use package <a href="https://github.com/mirage/lwt-dllist"><code>lwt-dllist</code></a> instead.</p></li></ul><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></code></div><div class="spec-doc"><p>Type of a sequence holding values of type <code>'a</code></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">type</span> <span>'a node</span></span></code></div><div class="spec-doc"><p>Type of a node holding one value of type <code>'a</code> in a sequence</p></div></div><h3 id="operation-on-nodes"><a href="#operation-on-nodes" class="anchor"></a>Operation on nodes</h3><div class="odoc-spec"><div class="spec value anchored" id="val-get"><a href="#val-get" class="anchor"></a><code><span><span class="keyword">val</span> get : <span><span><span class="type-var">'a</span> <a href="#type-node">node</a></span> <span class="arrow">-></span></span> <span class="type-var">'a</span></span></code></div><div class="spec-doc"><p>Returns the contents of a node</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-set"><a href="#val-set" class="anchor"></a><code><span><span class="keyword">val</span> set : <span><span><span class="type-var">'a</span> <a href="#type-node">node</a></span> <span class="arrow">-></span></span> <span><span class="type-var">'a</span> <span class="arrow">-></span></span> unit</span></code></div><div class="spec-doc"><p>Change the contents of a node</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-remove"><a href="#val-remove" class="anchor"></a><code><span><span class="keyword">val</span> remove : <span><span><span class="type-var">'a</span> <a href="#type-node">node</a></span> <span class="arrow">-></span></span> unit</span></code></div><div class="spec-doc"><p>Removes a node from the sequence it is part of. It does nothing if the node has already been removed.</p></div></div><h3 id="operations-on-sequence"><a href="#operations-on-sequence" class="anchor"></a>Operations on sequence</h3><div class="odoc-spec"><div class="spec value anchored" id="val-create"><a href="#val-create" class="anchor"></a><code><span><span class="keyword">val</span> create : <span>unit <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>create ()</code> creates a new empty sequence</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-clear"><a href="#val-clear" class="anchor"></a><code><span><span class="keyword">val</span> clear : <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> unit</span></code></div><div class="spec-doc"><p>Removes all nodes from the given sequence. The nodes are not actually mutated to note their removal. Only the sequence's pointers are updated.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-is_empty"><a href="#val-is_empty" class="anchor"></a><code><span><span class="keyword">val</span> is_empty : <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> bool</span></code></div><div class="spec-doc"><p>Returns <code>true</code> iff the given sequence is empty</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-length"><a href="#val-length" class="anchor"></a><code><span><span class="keyword">val</span> length : <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> int</span></code></div><div class="spec-doc"><p>Returns the number of elements in the given sequence. This is a O(n) operation where <code>n</code> is the number of elements in the sequence.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-add_l"><a href="#val-add_l" class="anchor"></a><code><span><span class="keyword">val</span> add_l : <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-node">node</a></span></span></code></div><div class="spec-doc"><p><code>add_l x s</code> adds <code>x</code> to the left of the sequence <code>s</code></p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-add_r"><a href="#val-add_r" class="anchor"></a><code><span><span class="keyword">val</span> add_r : <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-node">node</a></span></span></code></div><div class="spec-doc"><p><code>add_r x s</code> adds <code>x</code> to the right of the sequence <code>s</code></p></div></div><div class="odoc-spec"><div class="spec exception anchored" id="exception-Empty"><a href="#exception-Empty" class="anchor"></a><code><span><span class="keyword">exception</span> </span><span><span class="exception">Empty</span></span></code></div><div class="spec-doc"><p>Exception raised by <code>take_l</code> and <code>take_r</code> and when the sequence is empty</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-take_l"><a href="#val-take_l" class="anchor"></a><code><span><span class="keyword">val</span> take_l : <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span class="type-var">'a</span></span></code></div><div class="spec-doc"><p><code>take_l x s</code> remove and returns the leftmost element of <code>s</code></p><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <a href="#exception-Empty"><code>Empty</code></a> <p>if the sequence is empty</p></li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-take_r"><a href="#val-take_r" class="anchor"></a><code><span><span class="keyword">val</span> take_r : <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span class="type-var">'a</span></span></code></div><div class="spec-doc"><p><code>take_r x s</code> remove and returns the rightmost element of <code>s</code></p><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <a href="#exception-Empty"><code>Empty</code></a> <p>if the sequence is empty</p></li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-take_opt_l"><a href="#val-take_opt_l" class="anchor"></a><code><span><span class="keyword">val</span> take_opt_l : <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> option</span></span></code></div><div class="spec-doc"><p><code>take_opt_l x s</code> remove and returns <code>Some x</code> where <code>x</code> is the leftmost element of <code>s</code> or <code>None</code> if <code>s</code> is empty</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-take_opt_r"><a href="#val-take_opt_r" class="anchor"></a><code><span><span class="keyword">val</span> take_opt_r : <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> option</span></span></code></div><div class="spec-doc"><p><code>take_opt_r x s</code> remove and returns <code>Some x</code> where <code>x</code> is the rightmost element of <code>s</code> or <code>None</code> if <code>s</code> is empty</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-transfer_l"><a href="#val-transfer_l" class="anchor"></a><code><span><span class="keyword">val</span> transfer_l : <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> unit</span></code></div><div class="spec-doc"><p><code>transfer_l s1 s2</code> removes all elements of <code>s1</code> and add them at the left of <code>s2</code>. This operation runs in constant time and space.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-transfer_r"><a href="#val-transfer_r" class="anchor"></a><code><span><span class="keyword">val</span> transfer_r : <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> unit</span></code></div><div class="spec-doc"><p><code>transfer_r s1 s2</code> removes all elements of <code>s1</code> and add them at the right of <code>s2</code>. This operation runs in constant time and space.</p></div></div><h3 id="sequence-iterators"><a href="#sequence-iterators" class="anchor"></a>Sequence iterators</h3><p>Note: it is OK to remove a node while traversing a sequence</p><div class="odoc-spec"><div class="spec value anchored" id="val-iter_l"><a href="#val-iter_l" class="anchor"></a><code><span><span class="keyword">val</span> iter_l : <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> unit</span></code></div><div class="spec-doc"><p><code>iter_l f s</code> applies <code>f</code> on all elements of <code>s</code> starting from the left</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-iter_r"><a href="#val-iter_r" class="anchor"></a><code><span><span class="keyword">val</span> iter_r : <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> unit</span></code></div><div class="spec-doc"><p><code>iter_r f s</code> applies <code>f</code> on all elements of <code>s</code> starting from the right</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-iter_node_l"><a href="#val-iter_node_l" class="anchor"></a><code><span><span class="keyword">val</span> iter_node_l : <span><span>(<span><span><span class="type-var">'a</span> <a href="#type-node">node</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> unit</span></code></div><div class="spec-doc"><p><code>iter_node_l f s</code> applies <code>f</code> on all nodes of <code>s</code> starting from the left</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-iter_node_r"><a href="#val-iter_node_r" class="anchor"></a><code><span><span class="keyword">val</span> iter_node_r : <span><span>(<span><span><span class="type-var">'a</span> <a href="#type-node">node</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> unit</span></code></div><div class="spec-doc"><p><code>iter_node_r f s</code> applies <code>f</code> on all nodes of <code>s</code> starting from the right</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-fold_l"><a href="#val-fold_l" class="anchor"></a><code><span><span class="keyword">val</span> fold_l : <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">'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> <span class="arrow">-></span></span> <span class="type-var">'b</span></span></code></div><div class="spec-doc"><p><code>fold_l f s</code> is:</p><pre class="language-ocaml"><code> fold_l f s x = f en (... (f e2 (f e1 x)))</code></pre><p>where <code>e1</code>, <code>e2</code>, ..., <code>en</code> are the elements of <code>s</code></p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-fold_r"><a href="#val-fold_r" class="anchor"></a><code><span><span class="keyword">val</span> fold_r : <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">'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> <span class="arrow">-></span></span> <span class="type-var">'b</span></span></code></div><div class="spec-doc"><p><code>fold_r f s</code> is:</p><pre class="language-ocaml"><code> fold_r f s x = f e1 (f e2 (... (f en x)))</code></pre><p>where <code>e1</code>, <code>e2</code>, ..., <code>en</code> are the elements of <code>s</code></p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-find_node_opt_l"><a href="#val-find_node_opt_l" class="anchor"></a><code><span><span class="keyword">val</span> find_node_opt_l : <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><span class="type-var">'a</span> <a href="#type-node">node</a></span> option</span></span></code></div><div class="spec-doc"><p><code>find_node_opt_l f s</code> returns <code>Some x</code>, where <code>x</code> is the first node of <code>s</code> starting from the left that satisfies <code>f</code> or <code>None</code> if none exists.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-find_node_opt_r"><a href="#val-find_node_opt_r" class="anchor"></a><code><span><span class="keyword">val</span> find_node_opt_r : <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><span class="type-var">'a</span> <a href="#type-node">node</a></span> option</span></span></code></div><div class="spec-doc"><p><code>find_node_opt_r f s</code> returns <code>Some x</code>, where <code>x</code> is the first node of <code>s</code> starting from the right that satisfies <code>f</code> or <code>None</code> if none exists.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-find_node_l"><a href="#val-find_node_l" class="anchor"></a><code><span><span class="keyword">val</span> find_node_l : <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-node">node</a></span></span></code></div><div class="spec-doc"><p><code>find_node_l f s</code> returns the first node of <code>s</code> starting from the left that satisfies <code>f</code> or raises <code>Not_found</code> if none exists.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-find_node_r"><a href="#val-find_node_r" class="anchor"></a><code><span><span class="keyword">val</span> find_node_r : <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-node">node</a></span></span></code></div><div class="spec-doc"><p><code>find_node_r f s</code> returns the first node of <code>s</code> starting from the right that satisfies <code>f</code> or raises <code>Not_found</code> if none exists.</p></div></div></div></body></html>
|