mirror of
https://github.com/c-cube/ocaml-containers.git
synced 2025-12-06 11:15:31 -05:00
2 lines
No EOL
23 KiB
HTML
2 lines
No EOL
23 KiB
HTML
<!DOCTYPE html>
|
||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>Fut (containers-thread.CCPool.Make.Fut)</title><link rel="stylesheet" href="../../../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.0.1"/><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">containers-thread</a> » <a href="../../index.html">CCPool</a> » <a href="../index.html">Make</a> » Fut</nav><header class="odoc-preamble"><h1>Module <code><span>Make.Fut</span></code></h1></header><nav class="odoc-toc"><ul><li><a href="#futures">Futures</a></li><li><a href="#constructors">Constructors</a></li><li><a href="#basics">Basics</a></li><li><a href="#combinators">Combinators</a></li></ul></nav><div class="odoc-content"><h5 id="futures"><a href="#futures" class="anchor"></a>Futures</h5><p>The futures are registration points for callbacks, storing a <a href="../../index.html#type-state"><code>state</code></a>, that are executed in the pool using <a href="../index.html#val-run"><code>run</code></a>.</p><div class="odoc-spec"><div class="spec type" id="type-t" class="anchored"><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>A future value of type <code>'a</code></p></div></div><div class="odoc-spec"><div class="spec type" id="type-future" class="anchored"><a href="#type-future" class="anchor"></a><code><span><span class="keyword">type</span> <span>'a future</span></span><span> = <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div></div><h3 id="constructors"><a href="#constructors" class="anchor"></a>Constructors</h3><div class="odoc-spec"><div class="spec value" id="val-return" class="anchored"><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>Future that is already computed.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-fail" class="anchored"><a href="#val-fail" class="anchor"></a><code><span><span class="keyword">val</span> fail : <span>exn <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>Future that fails immediately.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-make" class="anchored"><a href="#val-make" class="anchor"></a><code><span><span class="keyword">val</span> make : <span><span>(<span>unit <span class="arrow">-></span></span> <span class="type-var">'a</span>)</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>Create a future, representing a value that will be computed by the function. If the function raises, the future will fail.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-make1" class="anchored"><a href="#val-make1" class="anchor"></a><code><span><span class="keyword">val</span> make1 : <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 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></code></div></div><div class="odoc-spec"><div class="spec value" id="val-make2" class="anchored"><a href="#val-make2" class="anchor"></a><code><span><span class="keyword">val</span> make2 : <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">'c</span>)</span> <span class="arrow">-></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">'c</span> <a href="#type-t">t</a></span></span></code></div></div><h3 id="basics"><a href="#basics" class="anchor"></a>Basics</h3><div class="odoc-spec"><div class="spec value" id="val-get" class="anchored"><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-t">t</a></span> <span class="arrow">-></span></span> <span class="type-var">'a</span></span></code></div><div class="spec-doc"><p>Blocking get: wait for the future to be evaluated, and get the value, or the exception that failed the future is returned. Raise e if the future failed with e.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-state" class="anchored"><a href="#val-state" class="anchor"></a><code><span><span class="keyword">val</span> state : <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="../../index.html#type-state">state</a></span></span></code></div><div class="spec-doc"><p>State of the future.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-is_done" class="anchored"><a href="#val-is_done" class="anchor"></a><code><span><span class="keyword">val</span> is_done : <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>Is the future evaluated (success/failure)?</p></div></div><h3 id="combinators"><a href="#combinators" class="anchor"></a>Combinators</h3><div class="odoc-spec"><div class="spec value" id="val-on_success" class="anchored"><a href="#val-on_success" class="anchor"></a><code><span><span class="keyword">val</span> on_success : <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span><span>(<span><span class="type-var">'a</span> <span class="arrow">-></span></span> unit)</span> <span class="arrow">-></span></span> unit</span></code></div><div class="spec-doc"><p>Attach a handler to be called upon success. The handler should not call functions on the future. Might be evaluated now if the future is already done.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-on_failure" class="anchored"><a href="#val-on_failure" class="anchor"></a><code><span><span class="keyword">val</span> on_failure : <span><span><span class="type-var">_</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span><span>(<span>exn <span class="arrow">-></span></span> unit)</span> <span class="arrow">-></span></span> unit</span></code></div><div class="spec-doc"><p>Attach a handler to be called upon failure. The handler should not call any function on the future. Might be evaluated now if the future is already done.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-on_finish" class="anchored"><a href="#val-on_finish" class="anchor"></a><code><span><span class="keyword">val</span> on_finish : <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span><span>(<span><span><span class="type-var">'a</span> <a href="../../index.html#type-state">state</a></span> <span class="arrow">-></span></span> unit)</span> <span class="arrow">-></span></span> unit</span></code></div><div class="spec-doc"><p>Attach a handler to be called when the future is evaluated. The handler should not call functions on the future. Might be evaluated now if the future is already done.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-flat_map" class="anchored"><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>Monadic combination of futures.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-and_then" class="anchored"><a href="#val-and_then" class="anchor"></a><code><span><span class="keyword">val</span> and_then : <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span><span>(<span>unit <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 class="type-var">'b</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p>Wait for the first future to succeed, then launch the second.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-sequence_a" class="anchored"><a href="#val-sequence_a" class="anchor"></a><code><span><span class="keyword">val</span> sequence_a : <span><span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> array</span> <span class="arrow">-></span></span> <span><span><span class="type-var">'a</span> array</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p>Future that waits for all previous futures to terminate. If any future in the array fails, <code>sequence_a l</code> fails too.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-map_a" class="anchored"><a href="#val-map_a" class="anchor"></a><code><span><span class="keyword">val</span> map_a : <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> array</span> <span class="arrow">-></span></span> <span><span><span class="type-var">'b</span> array</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>map_a f a</code> maps <code>f</code> on every element of <code>a</code>, and will return the array of every result if all calls succeed, or an error otherwise.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-sequence_l" class="anchored"><a href="#val-sequence_l" class="anchor"></a><code><span><span class="keyword">val</span> sequence_l : <span><span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> list</span> <span class="arrow">-></span></span> <span><span><span class="type-var">'a</span> list</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p>Future that waits for all previous futures to terminate. If any future in the list fails, <code>sequence_l l</code> fails too.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-map_l" class="anchored"><a href="#val-map_l" class="anchor"></a><code><span><span class="keyword">val</span> map_l : <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> list</span> <span class="arrow">-></span></span> <span><span><span class="type-var">'b</span> list</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>map_l f l</code> maps <code>f</code> on every element of <code>l</code>, and will return the list of every result if all calls succeed, or an error otherwise.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-choose_a" class="anchored"><a href="#val-choose_a" class="anchor"></a><code><span><span class="keyword">val</span> choose_a : <span><span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> array</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>Choose among those futures (the first to terminate). Behaves like the first future that terminates, by failing if the future fails.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-choose_l" class="anchored"><a href="#val-choose_l" class="anchor"></a><code><span><span class="keyword">val</span> choose_l : <span><span><span><span class="type-var">'a</span> <a href="#type-t">t</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>Choose among those futures (the first to terminate). Behaves like the first future that terminates, by failing if the future fails.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-map" class="anchored"><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>Map the value inside the future. The function doesn't run in its own task; if it can take time, use <a href="#val-flat_map"><code>flat_map</code></a> or <a href="#val-map_async"><code>map_async</code></a>.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-map_async" class="anchored"><a href="#val-map_async" class="anchor"></a><code><span><span class="keyword">val</span> map_async : <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>Map the value inside the future, to be computed in a separated job.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-monoid_product" class="anchored"><a href="#val-monoid_product" class="anchor"></a><code><span><span class="keyword">val</span> monoid_product : <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">'c</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><span class="type-var">'b</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span><span class="type-var">'c</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p>Cartesian product of the content of these futures.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 2.8</li></ul></div></div><div class="odoc-spec"><div class="spec value" id="val-app" class="anchored"><a href="#val-app" class="anchor"></a><code><span><span class="keyword">val</span> app : <span><span><span>(<span><span class="type-var">'a</span> <span class="arrow">-></span></span> <span class="type-var">'b</span>)</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">'b</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>app f x</code> applies the result of <code>f</code> to the result of <code>x</code>.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-app_async" class="anchored"><a href="#val-app_async" class="anchor"></a><code><span><span class="keyword">val</span> app_async : <span><span><span>(<span><span class="type-var">'a</span> <span class="arrow">-></span></span> <span class="type-var">'b</span>)</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">'b</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>app_async f x</code> applies the result of <code>f</code> to the result of <code>x</code>, in a separated job scheduled in the pool.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-sleep" class="anchored"><a href="#val-sleep" class="anchor"></a><code><span><span class="keyword">val</span> sleep : <span>float <span class="arrow">-></span></span> <span>unit <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p>Future that returns with success in the given amount of seconds. Blocks the thread! If you need to wait on many events, consider using <a href="../../../CCTimer/index.html"><code>CCTimer</code></a>.</p></div></div><div class="odoc-spec"><div class="spec module" id="module-Infix" class="anchored"><a href="#module-Infix" class="anchor"></a><code><span><span class="keyword">module</span> </span><span><a href="Infix/index.html">Infix</a></span><span> : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div></div><div class="odoc-spec"><div class="spec value" id="val-(>>=)" class="anchored"><a href="#val-(>>=)" class="anchor"></a><code><span><span class="keyword">val</span> (>>=) : <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <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 class="type-var">'b</span> <a href="#type-t">t</a></span></span></code></div></div><div class="odoc-spec"><div class="spec value" id="val-(>>)" class="anchored"><a href="#val-(>>)" class="anchor"></a><code><span><span class="keyword">val</span> (>>) : <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span><span>(<span>unit <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 class="type-var">'b</span> <a href="#type-t">t</a></span></span></code></div></div><div class="odoc-spec"><div class="spec value" id="val-(>|=)" class="anchored"><a href="#val-(>|=)" class="anchor"></a><code><span><span class="keyword">val</span> (>|=) : <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <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 class="type-var">'b</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p>Alias to <a href="#val-map"><code>map</code></a>.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-(<*>)" class="anchored"><a href="#val-(<*>)" class="anchor"></a><code><span><span class="keyword">val</span> (<*>) : <span><span><span>(<span><span class="type-var">'a</span> <span class="arrow">-></span></span> <span class="type-var">'b</span>)</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">'b</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p>Alias to <a href="#val-app"><code>app</code></a>.</p></div></div><div class="odoc-include"><div class="spec-doc"><p>Let operators on OCaml >= 4.08.0, nothing otherwise</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 2.8</li></ul></div><details open="open"><summary class="spec include"><code><span><span class="keyword">include</span> <a href="../../../../containers/CCShimsMkLet_/module-type-S/index.html">CCShimsMkLet_.S</a> <span class="keyword">with</span> <span><span class="keyword">type</span> <span>'a <a href="../../../../containers/CCShimsMkLet_/module-type-S/index.html#type-t_let">t_let</a></span> := <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></span></code></summary><div class="odoc-spec"><div class="spec value" id="val-let+" class="anchored"><a href="#val-let+" class="anchor"></a><code><span><span class="keyword">val</span> let+ : <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <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 class="type-var">'b</span> <a href="#type-t">t</a></span></span></code></div></div><div class="odoc-spec"><div class="spec value" id="val-and+" class="anchored"><a href="#val-and+" class="anchor"></a><code><span><span class="keyword">val</span> and+ : <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">'b</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span><span>(<span class="type-var">'a</span> * <span class="type-var">'b</span>)</span> <a href="#type-t">t</a></span></span></code></div></div><div class="odoc-spec"><div class="spec value" id="val-let*" class="anchored"><a href="#val-let*" class="anchor"></a><code><span><span class="keyword">val</span> let* : <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <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 class="type-var">'b</span> <a href="#type-t">t</a></span></span></code></div></div><div class="odoc-spec"><div class="spec value" id="val-and*" class="anchored"><a href="#val-and*" class="anchor"></a><code><span><span class="keyword">val</span> and* : <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">'b</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span><span>(<span class="type-var">'a</span> * <span class="type-var">'b</span>)</span> <a href="#type-t">t</a></span></span></code></div></div></details></div></div></body></html> |