mirror of
https://github.com/c-cube/ocaml-containers.git
synced 2025-12-06 11:15:31 -05:00
2 lines
No EOL
46 KiB
HTML
2 lines
No EOL
46 KiB
HTML
<!DOCTYPE html>
|
||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>CCResult (containers.CCResult)</title><link rel="stylesheet" href="../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 1.5.1"/><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> » CCResult</nav><h1>Module <code>CCResult</code></h1><h2 id="error-monad"><a href="#error-monad" class="anchor"></a>Error Monad</h2><p>Uses the new "result" type from OCaml 4.03.</p><dl><dt>since</dt><dd>0.16</dd></dl><nav class="toc"><ul><li><a href="#basics">Basics</a></li><li><a href="#wrappers">Wrappers</a></li><li><a href="#applicative">Applicative</a></li><li><a href="#infix">Infix</a></li><li><a href="#collections">Collections</a></li><li><a href="#misc">Misc</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><dd><p>Fast internal iterator.</p><dl><dt>since</dt><dd>2.8</dd></dl></dd></dl><dl><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-result"><a href="#type-result" class="anchor"></a><code><span class="keyword">type</span> <span class="keyword">nonrec</span> <span>(+'good, +'bad) result</span></code><code> = <span><span>(<span class="type-var">'good</span>, <span class="type-var">'bad</span>)</span> Stdlib.result</span></code><code> = </code><table class="variant"><tr id="type-result.Ok" class="anchored"><td class="def constructor"><a href="#type-result.Ok" class="anchor"></a><code>| </code><code><span class="constructor">Ok</span> <span class="keyword">of</span> <span class="type-var">'good</span></code></td></tr><tr id="type-result.Error" class="anchored"><td class="def constructor"><a href="#type-result.Error" class="anchor"></a><code>| </code><code><span class="constructor">Error</span> <span class="keyword">of</span> <span class="type-var">'bad</span></code></td></tr></table></dt><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> <span>(+'good, +'bad) t</span></code><code> = <span><span>(<span class="type-var">'good</span>, <span class="type-var">'bad</span>)</span> <a href="index.html#type-result">result</a></span></code><code> = </code><table class="variant"><tr id="type-t.Ok" class="anchored"><td class="def constructor"><a href="#type-t.Ok" class="anchor"></a><code>| </code><code><span class="constructor">Ok</span> <span class="keyword">of</span> <span class="type-var">'good</span></code></td></tr><tr id="type-t.Error" class="anchored"><td class="def constructor"><a href="#type-t.Error" class="anchor"></a><code>| </code><code><span class="constructor">Error</span> <span class="keyword">of</span> <span class="type-var">'bad</span></code></td></tr></table></dt></dl><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>(<span class="type-var">'a</span>, <span class="type-var">'err</span>)</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p>Successfully return a value.</p></dd></dl><dl><dt class="spec value" id="val-fail"><a href="#val-fail" class="anchor"></a><code><span class="keyword">val</span> fail : <span class="type-var">'err</span> <span>-></span> <span><span>(<span class="type-var">'a</span>, <span class="type-var">'err</span>)</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p>Fail with an error.</p></dd></dl><dl><dt class="spec value" id="val-of_exn"><a href="#val-of_exn" class="anchor"></a><code><span class="keyword">val</span> of_exn : exn <span>-></span> <span><span>(<span class="type-var">'a</span>, string)</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p><code>of_exn e</code> uses <code>Printexc</code> to print the exception as a string.</p></dd></dl><dl><dt class="spec value" id="val-of_exn_trace"><a href="#val-of_exn_trace" class="anchor"></a><code><span class="keyword">val</span> of_exn_trace : exn <span>-></span> <span><span>(<span class="type-var">'a</span>, string)</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p><code>of_exn_trace e</code> is similar to <code>of_exn e</code>, but it adds the stacktrace to the error message.</p><p>Remember to call <code>Printexc.record_backtrace true</code> and compile with the debug flag for this to work.</p></dd></dl><dl><dt class="spec value" id="val-fail_printf"><a href="#val-fail_printf" class="anchor"></a><code><span class="keyword">val</span> fail_printf : <span><span>(<span class="type-var">'a</span>, Stdlib.Buffer.t, unit, <span><span>(<span class="type-var">'b</span>, string)</span> <a href="index.html#type-t">t</a></span>)</span> Stdlib.format4</span> <span>-></span> <span class="type-var">'a</span></code></dt><dd><p><code>fail_printf format</code> uses <code>format</code> to obtain an error message and then returns <code>Error msg</code>.</p></dd></dl><dl><dt class="spec value" id="val-fail_fprintf"><a href="#val-fail_fprintf" class="anchor"></a><code><span class="keyword">val</span> fail_fprintf : <span><span>(<span class="type-var">'a</span>, Stdlib.Format.formatter, unit, <span><span>(<span class="type-var">'b</span>, string)</span> <a href="index.html#type-t">t</a></span>)</span> Stdlib.format4</span> <span>-></span> <span class="type-var">'a</span></code></dt><dd><p><code>fail_fprintf format</code> uses <code>format</code> to obtain an error message and then returns <code>Error msg</code>.</p></dd></dl><dl><dt class="spec value" id="val-add_ctx"><a href="#val-add_ctx" class="anchor"></a><code><span class="keyword">val</span> add_ctx : string <span>-></span> <span><span>(<span class="type-var">'a</span>, string)</span> <a href="index.html#type-t">t</a></span> <span>-></span> <span><span>(<span class="type-var">'a</span>, string)</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p><code>add_ctx msg</code> leaves <code>Ok x</code> untouched, but transforms <code>Error s</code> into <code>Error s'</code> where <code>s'</code> contains the additional context given by <code>msg</code>.</p><dl><dt>since</dt><dd>1.2</dd></dl></dd></dl><dl><dt class="spec value" id="val-add_ctxf"><a href="#val-add_ctxf" class="anchor"></a><code><span class="keyword">val</span> add_ctxf : <span><span>(<span class="type-var">'a</span>, Stdlib.Format.formatter, unit, <span><span>(<span class="type-var">'b</span>, string)</span> <a href="index.html#type-t">t</a></span> <span>-></span> <span><span>(<span class="type-var">'b</span>, string)</span> <a href="index.html#type-t">t</a></span>)</span> Stdlib.format4</span> <span>-></span> <span class="type-var">'a</span></code></dt><dd><p><code>add_ctxf format_message</code> is similar to <a href="index.html#val-add_ctx"><code>add_ctx</code></a> but with <code>Format</code> for printing the message (eagerly). Example:</p><pre><code class="ml">add_ctxf "message(number %d, foo: %B)" 42 true (Error "error)"</code></pre><dl><dt>since</dt><dd>1.2</dd></dl></dd></dl><dl><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>(<span class="type-var">'a</span>, <span class="type-var">'err</span>)</span> <a href="index.html#type-t">t</a></span> <span>-></span> <span><span>(<span class="type-var">'b</span>, <span class="type-var">'err</span>)</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p>Map on success.</p></dd></dl><dl><dt class="spec value" id="val-map_err"><a href="#val-map_err" class="anchor"></a><code><span class="keyword">val</span> map_err : <span>(<span class="type-var">'err1</span> <span>-></span> <span class="type-var">'err2</span>)</span> <span>-></span> <span><span>(<span class="type-var">'a</span>, <span class="type-var">'err1</span>)</span> <a href="index.html#type-t">t</a></span> <span>-></span> <span><span>(<span class="type-var">'a</span>, <span class="type-var">'err2</span>)</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p>Map on the error variant.</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> <span>(<span class="type-var">'err1</span> <span>-></span> <span class="type-var">'err2</span>)</span> <span>-></span> <span><span>(<span class="type-var">'a</span>, <span class="type-var">'err1</span>)</span> <a href="index.html#type-t">t</a></span> <span>-></span> <span><span>(<span class="type-var">'b</span>, <span class="type-var">'err2</span>)</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p>Like <a href="index.html#val-map"><code>map</code></a>, but also with a function that can transform the error message in case of failure.</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>(<span class="type-var">'a</span>, <span class="type-var">_</span>)</span> <a href="index.html#type-t">t</a></span> <span>-></span> unit</code></dt><dd><p>Apply the function only in case of <code>Ok</code>.</p></dd></dl><dl><dt class="spec value" id="val-iter_err"><a href="#val-iter_err" class="anchor"></a><code><span class="keyword">val</span> iter_err : <span>(<span class="type-var">'err</span> <span>-></span> unit)</span> <span>-></span> <span><span>(<span class="type-var">_</span>, <span class="type-var">'err</span>)</span> <a href="index.html#type-t">t</a></span> <span>-></span> unit</code></dt><dd><p>Apply the function in case of <code>Error</code>.</p><dl><dt>since</dt><dd>2.4</dd></dl></dd></dl><dl><dt class="spec exception" id="exception-Get_error"><a href="#exception-Get_error" class="anchor"></a><code><span class="keyword">exception</span> </code><code><span class="exception">Get_error</span></code></dt></dl><dl><dt class="spec value" id="val-get_exn"><a href="#val-get_exn" class="anchor"></a><code><span class="keyword">val</span> get_exn : <span><span>(<span class="type-var">'a</span>, <span class="type-var">_</span>)</span> <a href="index.html#type-t">t</a></span> <span>-></span> <span class="type-var">'a</span></code></dt><dd><p>Extract the value <code>x</code> from <code>Ok x</code>, fails otherwise. You should be careful with this function, and favor other combinators whenever possible.</p><dl><dt>raises Get_error</dt><dd><p>if the value is an error.</p></dd></dl></dd></dl><dl><dt class="spec value" id="val-get_or"><a href="#val-get_or" class="anchor"></a><code><span class="keyword">val</span> get_or : <span><span>(<span class="type-var">'a</span>, <span class="type-var">_</span>)</span> <a href="index.html#type-t">t</a></span> <span>-></span> <span>default:<span class="type-var">'a</span></span> <span>-></span> <span class="type-var">'a</span></code></dt><dd><p><code>get_or e ~default</code> returns <code>x</code> if <code>e = Ok x</code>, <code>default</code> otherwise.</p></dd></dl><dl><dt class="spec value" id="val-get_lazy"><a href="#val-get_lazy" class="anchor"></a><code><span class="keyword">val</span> get_lazy : <span>(<span class="type-var">'e</span> <span>-></span> <span class="type-var">'a</span>)</span> <span>-></span> <span><span>(<span class="type-var">'a</span>, <span class="type-var">'e</span>)</span> <a href="index.html#type-t">t</a></span> <span>-></span> <span class="type-var">'a</span></code></dt><dd><p><code>get_lazy f e</code> returns <code>x</code> if <code>e = Ok x</code>, <code>f msg</code> if <code>e = Error msg</code>. This is similar to <a href="../CCOpt/index.html#val-get_lazy"><code>CCOpt.get_lazy</code></a>.</p><dl><dt>since</dt><dd>3.0</dd></dl></dd></dl><dl><dt class="spec value" id="val-get_or_failwith"><a href="#val-get_or_failwith" class="anchor"></a><code><span class="keyword">val</span> get_or_failwith : <span><span>(<span class="type-var">'a</span>, string)</span> <a href="index.html#type-t">t</a></span> <span>-></span> <span class="type-var">'a</span></code></dt><dd><p><code>get_or_failwith e</code> returns <code>x</code> if <code>e = Ok x</code>, fails otherwise.</p><dl><dt>raises Failure</dt><dd><p>with <code>msg</code> if <code>e = Error msg</code>.</p></dd></dl><dl><dt>since</dt><dd>2.4</dd></dl></dd></dl><dl><dt class="spec value" id="val-get_lazy"><a href="#val-get_lazy" class="anchor"></a><code><span class="keyword">val</span> get_lazy : <span>(<span class="type-var">'b</span> <span>-></span> <span class="type-var">'a</span>)</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> <span>-></span> <span class="type-var">'a</span></code></dt><dd><p><code>get_lazy default_fn x</code> unwraps <code>x</code>, but if <code>x = Error e</code> it returns <code>default_fr e</code> instead.</p><dl><dt>since</dt><dd>3.0</dd></dl></dd></dl><dl><dt class="spec value" id="val-map_or"><a href="#val-map_or" class="anchor"></a><code><span class="keyword">val</span> map_or : <span>(<span class="type-var">'a</span> <span>-></span> <span class="type-var">'b</span>)</span> <span>-></span> <span><span>(<span class="type-var">'a</span>, <span class="type-var">'c</span>)</span> <a href="index.html#type-t">t</a></span> <span>-></span> <span>default:<span class="type-var">'b</span></span> <span>-></span> <span class="type-var">'b</span></code></dt><dd><p><code>map_or f e ~default</code> returns <code>f x</code> if <code>e = Ok x</code>, <code>default</code> otherwise.</p></dd></dl><dl><dt class="spec value" id="val-catch"><a href="#val-catch" class="anchor"></a><code><span class="keyword">val</span> catch : <span><span>(<span class="type-var">'a</span>, <span class="type-var">'err</span>)</span> <a href="index.html#type-t">t</a></span> <span>-></span> <span>ok:<span>(<span class="type-var">'a</span> <span>-></span> <span class="type-var">'b</span>)</span></span> <span>-></span> <span>err:<span>(<span class="type-var">'err</span> <span>-></span> <span class="type-var">'b</span>)</span></span> <span>-></span> <span class="type-var">'b</span></code></dt><dd><p><code>catch e ~ok ~err</code> calls either <code>ok</code> or <code>err</code> depending on the value of <code>e</code>.</p></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>(<span class="type-var">'b</span>, <span class="type-var">'err</span>)</span> <a href="index.html#type-t">t</a></span>)</span> <span>-></span> <span><span>(<span class="type-var">'a</span>, <span class="type-var">'err</span>)</span> <a href="index.html#type-t">t</a></span> <span>-></span> <span><span>(<span class="type-var">'b</span>, <span class="type-var">'err</span>)</span> <a href="index.html#type-t">t</a></span></code></dt><dt class="spec value" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span class="keyword">val</span> equal : <span>err:<span><span class="type-var">'err</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-equal">equal</a></span> <span>-></span> <span><span><span>(<span class="type-var">'a</span>, <span class="type-var">'err</span>)</span> <a href="index.html#type-t">t</a></span> <a href="index.html#type-equal">equal</a></span></code></dt><dt class="spec value" id="val-compare"><a href="#val-compare" class="anchor"></a><code><span class="keyword">val</span> compare : <span>err:<span><span class="type-var">'err</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-ord">ord</a></span> <span>-></span> <span><span><span>(<span class="type-var">'a</span>, <span class="type-var">'err</span>)</span> <a href="index.html#type-t">t</a></span> <a href="index.html#type-ord">ord</a></span></code></dt><dt class="spec value" id="val-fold"><a href="#val-fold" class="anchor"></a><code><span class="keyword">val</span> fold : <span>ok:<span>(<span class="type-var">'a</span> <span>-></span> <span class="type-var">'b</span>)</span></span> <span>-></span> <span>error:<span>(<span class="type-var">'err</span> <span>-></span> <span class="type-var">'b</span>)</span></span> <span>-></span> <span><span>(<span class="type-var">'a</span>, <span class="type-var">'err</span>)</span> <a href="index.html#type-t">t</a></span> <span>-></span> <span class="type-var">'b</span></code></dt><dd><p><code>fold ~ok ~error e</code> opens <code>e</code> and, if <code>e = Ok x</code>, returns <code>ok x</code>, otherwise <code>e = Error s</code> and it returns <code>error s</code>.</p></dd></dl><dl><dt class="spec value" id="val-fold_ok"><a href="#val-fold_ok" class="anchor"></a><code><span class="keyword">val</span> fold_ok : <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>(<span class="type-var">'b</span>, <span class="type-var">_</span>)</span> <a href="index.html#type-t">t</a></span> <span>-></span> <span class="type-var">'a</span></code></dt><dd><p><code>fold_ok f acc r</code> will compute <code>f acc x</code> if <code>r=Ok x</code>, and return <code>acc</code> otherwise, as if the result were a mere option.</p><dl><dt>since</dt><dd>1.2</dd></dl></dd></dl><dl><dt class="spec value" id="val-is_ok"><a href="#val-is_ok" class="anchor"></a><code><span class="keyword">val</span> is_ok : <span><span>(<span class="type-var">'a</span>, <span class="type-var">'err</span>)</span> <a href="index.html#type-t">t</a></span> <span>-></span> bool</code></dt><dd><p>Return true if <code>Ok</code>.</p><dl><dt>since</dt><dd>1.0</dd></dl></dd></dl><dl><dt class="spec value" id="val-is_error"><a href="#val-is_error" class="anchor"></a><code><span class="keyword">val</span> is_error : <span><span>(<span class="type-var">'a</span>, <span class="type-var">'err</span>)</span> <a href="index.html#type-t">t</a></span> <span>-></span> bool</code></dt><dd><p>Return true if <code>Error</code>.</p><dl><dt>since</dt><dd>1.0</dd></dl></dd></dl></section><section><header><h3 id="wrappers"><a href="#wrappers" class="anchor"></a>Wrappers</h3></header><dl><dt class="spec value" id="val-guard"><a href="#val-guard" class="anchor"></a><code><span class="keyword">val</span> guard : <span>(unit <span>-></span> <span class="type-var">'a</span>)</span> <span>-></span> <span><span>(<span class="type-var">'a</span>, exn)</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p><code>guard f</code> runs <code>f ()</code> and returns its result wrapped in <code>Ok</code>. If <code>f ()</code> raises some exception <code>e</code>, then it fails with <code>Error e</code>.</p></dd></dl><dl><dt class="spec value" id="val-guard_str"><a href="#val-guard_str" class="anchor"></a><code><span class="keyword">val</span> guard_str : <span>(unit <span>-></span> <span class="type-var">'a</span>)</span> <span>-></span> <span><span>(<span class="type-var">'a</span>, string)</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p>Like <a href="index.html#val-guard"><code>guard</code></a> but uses <a href="index.html#val-of_exn"><code>of_exn</code></a> to print the exception.</p></dd></dl><dl><dt class="spec value" id="val-guard_str_trace"><a href="#val-guard_str_trace" class="anchor"></a><code><span class="keyword">val</span> guard_str_trace : <span>(unit <span>-></span> <span class="type-var">'a</span>)</span> <span>-></span> <span><span>(<span class="type-var">'a</span>, string)</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p>Like <a href="index.html#val-guard_str"><code>guard_str</code></a> but uses <a href="index.html#val-of_exn_trace"><code>of_exn_trace</code></a> instead of <a href="index.html#val-of_exn"><code>of_exn</code></a> so that the stack trace is printed.</p></dd></dl><dl><dt class="spec value" id="val-wrap1"><a href="#val-wrap1" class="anchor"></a><code><span class="keyword">val</span> wrap1 : <span>(<span class="type-var">'a</span> <span>-></span> <span class="type-var">'b</span>)</span> <span>-></span> <span class="type-var">'a</span> <span>-></span> <span><span>(<span class="type-var">'b</span>, exn)</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p>Like <a href="index.html#val-guard"><code>guard</code></a> but gives the function one argument.</p></dd></dl><dl><dt class="spec value" id="val-wrap2"><a href="#val-wrap2" class="anchor"></a><code><span class="keyword">val</span> wrap2 : <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 class="type-var">'a</span> <span>-></span> <span class="type-var">'b</span> <span>-></span> <span><span>(<span class="type-var">'c</span>, exn)</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p>Like <a href="index.html#val-guard"><code>guard</code></a> but gives the function two arguments.</p></dd></dl><dl><dt class="spec value" id="val-wrap3"><a href="#val-wrap3" class="anchor"></a><code><span class="keyword">val</span> wrap3 : <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 class="type-var">'d</span>)</span> <span>-></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">'d</span>, exn)</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p>Like <a href="index.html#val-guard"><code>guard</code></a> but gives the function three arguments.</p></dd></dl></section><section><header><h3 id="applicative"><a href="#applicative" class="anchor"></a>Applicative</h3></header><dl><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>(<span class="type-var">'a</span>, <span class="type-var">'err</span>)</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p>Synonym of <a href="index.html#val-return"><code>return</code></a>.</p></dd></dl><dl><dt class="spec value" id="val-join"><a href="#val-join" class="anchor"></a><code><span class="keyword">val</span> join : <span><span>(<span><span>(<span class="type-var">'a</span>, <span class="type-var">'err</span>)</span> <a href="index.html#type-t">t</a></span>, <span class="type-var">'err</span>)</span> <a href="index.html#type-t">t</a></span> <span>-></span> <span><span>(<span class="type-var">'a</span>, <span class="type-var">'err</span>)</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p><code>join t</code>, in case of success, returns <code>Ok o</code> from <code>Ok (Ok o)</code>. Otherwise, it fails with <code>Error e</code> where <code>e</code> is the unwrapped error of <code>t</code>.</p></dd></dl><dl><dt class="spec value" id="val-both"><a href="#val-both" class="anchor"></a><code><span class="keyword">val</span> both : <span><span>(<span class="type-var">'a</span>, <span class="type-var">'err</span>)</span> <a href="index.html#type-t">t</a></span> <span>-></span> <span><span>(<span class="type-var">'b</span>, <span class="type-var">'err</span>)</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 class="type-var">'err</span>)</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p><code>both a b</code>, in case of success, returns <code>Ok (o, o')</code> with the ok values of <code>a</code> and <code>b</code>. Otherwise, it fails, and the error of <code>a</code> is chosen over the error of <code>b</code> if both fail.</p></dd></dl></section><section><header><h3 id="infix"><a href="#infix" class="anchor"></a>Infix</h3></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><div><div class="spec include"><div class="doc"><details open="open"><summary><span class="def"><code><span class="keyword">include</span> <span class="keyword">module</span> <span class="keyword">type</span> <span class="keyword">of</span> <a href="index.html#module-Infix">Infix</a></code></span></summary><dl><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> <span>-></span> <span class="type-var">'b</span>)</span> <span>-></span> <span><span>(<span class="type-var">'a</span>, <span class="type-var">'err</span>)</span> <a href="index.html#type-t">t</a></span> <span>-></span> <span><span>(<span class="type-var">'b</span>, <span class="type-var">'err</span>)</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p>Infix version of <code>map</code>.</p><dl><dt>since</dt><dd>3.0</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 class="type-var">'err</span>)</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>(<span class="type-var">'b</span>, <span class="type-var">'err</span>)</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p>Infix version of <code>map</code> with reversed arguments.</p></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 class="type-var">'err</span>)</span> <a href="index.html#type-t">t</a></span> <span>-></span> <span>(<span class="type-var">'a</span> <span>-></span> <span><span>(<span class="type-var">'b</span>, <span class="type-var">'err</span>)</span> <a href="index.html#type-t">t</a></span>)</span> <span>-></span> <span><span>(<span class="type-var">'b</span>, <span class="type-var">'err</span>)</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p>Monadic composition. <code>e >>= f</code> proceeds as <code>f x</code> if <code>e</code> is <code>Ok x</code> or returns <code>e</code> if <code>e</code> is an <code>Error</code>.</p></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 class="type-var">'err</span>)</span> <a href="index.html#type-t">t</a></span> <span>-></span> <span><span>(<span class="type-var">'a</span>, <span class="type-var">'err</span>)</span> <a href="index.html#type-t">t</a></span> <span>-></span> <span><span>(<span class="type-var">'b</span>, <span class="type-var">'err</span>)</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p><code>a <*> b</code> evaluates <code>a</code> and <code>b</code>, and, in case of success, returns <code>Ok (a b)</code>. Otherwise, it fails, and the error of <code>a</code> is chosen over the error of <code>b</code> if both fail.</p></dd></dl><div><div class="spec include"><div class="doc"><p>Let operators on OCaml >= 4.08.0, nothing otherwise</p><dl><dt>since</dt><dd>2.8</dd></dl><details open="open"><summary><span class="def"><code><span class="keyword">include</span> <a href="../CCShimsMkLet_/index.html#module-type-S2">CCShimsMkLet_.S2</a> <span class="keyword">with</span> <span class="keyword">type</span> <span>('a, 'e) <a href="../CCShimsMkLet_/module-type-S2/index.html#type-t_let2">t_let2</a></span> := <span><span>(<span class="type-var">'a</span>, <span class="type-var">'e</span>)</span> <a href="index.html#type-result">result</a></span></code></span></summary><dl><dt class="spec type" id="type-t_let2"><a href="#type-t_let2" class="anchor"></a><code><span class="keyword">type</span> <span>('a, 'e) t_let2</span></code></dt></dl><dl><dt class="spec value" id="val-let+"><a href="#val-let+" class="anchor"></a><code><span class="keyword">val</span> let+ : <span><span>(<span class="type-var">'a</span>, <span class="type-var">'e</span>)</span> <a href="index.html#type-t_let2">t_let2</a></span> <span>-></span> <span>(<span class="type-var">'a</span> <span>-></span> <span class="type-var">'b</span>)</span> <span>-></span> <span><span>(<span class="type-var">'b</span>, <span class="type-var">'e</span>)</span> <a href="index.html#type-t_let2">t_let2</a></span></code></dt><dt class="spec value" id="val-and+"><a href="#val-and+" class="anchor"></a><code><span class="keyword">val</span> and+ : <span><span>(<span class="type-var">'a</span>, <span class="type-var">'e</span>)</span> <a href="index.html#type-t_let2">t_let2</a></span> <span>-></span> <span><span>(<span class="type-var">'b</span>, <span class="type-var">'e</span>)</span> <a href="index.html#type-t_let2">t_let2</a></span> <span>-></span> <span><span>(<span class="type-var">'a</span> * <span class="type-var">'b</span>, <span class="type-var">'e</span>)</span> <a href="index.html#type-t_let2">t_let2</a></span></code></dt><dt class="spec value" id="val-let*"><a href="#val-let*" class="anchor"></a><code><span class="keyword">val</span> let* : <span><span>(<span class="type-var">'a</span>, <span class="type-var">'e</span>)</span> <a href="index.html#type-t_let2">t_let2</a></span> <span>-></span> <span>(<span class="type-var">'a</span> <span>-></span> <span><span>(<span class="type-var">'b</span>, <span class="type-var">'e</span>)</span> <a href="index.html#type-t_let2">t_let2</a></span>)</span> <span>-></span> <span><span>(<span class="type-var">'b</span>, <span class="type-var">'e</span>)</span> <a href="index.html#type-t_let2">t_let2</a></span></code></dt><dt class="spec value" id="val-and*"><a href="#val-and*" class="anchor"></a><code><span class="keyword">val</span> and* : <span><span>(<span class="type-var">'a</span>, <span class="type-var">'e</span>)</span> <a href="index.html#type-t_let2">t_let2</a></span> <span>-></span> <span><span>(<span class="type-var">'b</span>, <span class="type-var">'e</span>)</span> <a href="index.html#type-t_let2">t_let2</a></span> <span>-></span> <span><span>(<span class="type-var">'a</span> * <span class="type-var">'b</span>, <span class="type-var">'e</span>)</span> <a href="index.html#type-t_let2">t_let2</a></span></code></dt></dl></details></div></div></div></details></div></div></div><div><div class="spec include"><div class="doc"><p>Let operators on OCaml >= 4.08.0, nothing otherwise</p><dl><dt>since</dt><dd>2.8</dd></dl><details open="open"><summary><span class="def"><code><span class="keyword">include</span> <a href="../CCShimsMkLet_/index.html#module-type-S2">CCShimsMkLet_.S2</a> <span class="keyword">with</span> <span class="keyword">type</span> <span>('a, 'e) <a href="../CCShimsMkLet_/module-type-S2/index.html#type-t_let2">t_let2</a></span> := <span><span>(<span class="type-var">'a</span>, <span class="type-var">'e</span>)</span> <a href="index.html#type-result">result</a></span></code></span></summary><dl><dt class="spec type" id="type-t_let2"><a href="#type-t_let2" class="anchor"></a><code><span class="keyword">type</span> <span>('a, 'e) t_let2</span></code></dt></dl><dl><dt class="spec value" id="val-let+"><a href="#val-let+" class="anchor"></a><code><span class="keyword">val</span> let+ : <span><span>(<span class="type-var">'a</span>, <span class="type-var">'e</span>)</span> <a href="index.html#type-t_let2">t_let2</a></span> <span>-></span> <span>(<span class="type-var">'a</span> <span>-></span> <span class="type-var">'b</span>)</span> <span>-></span> <span><span>(<span class="type-var">'b</span>, <span class="type-var">'e</span>)</span> <a href="index.html#type-t_let2">t_let2</a></span></code></dt><dt class="spec value" id="val-and+"><a href="#val-and+" class="anchor"></a><code><span class="keyword">val</span> and+ : <span><span>(<span class="type-var">'a</span>, <span class="type-var">'e</span>)</span> <a href="index.html#type-t_let2">t_let2</a></span> <span>-></span> <span><span>(<span class="type-var">'b</span>, <span class="type-var">'e</span>)</span> <a href="index.html#type-t_let2">t_let2</a></span> <span>-></span> <span><span>(<span class="type-var">'a</span> * <span class="type-var">'b</span>, <span class="type-var">'e</span>)</span> <a href="index.html#type-t_let2">t_let2</a></span></code></dt><dt class="spec value" id="val-let*"><a href="#val-let*" class="anchor"></a><code><span class="keyword">val</span> let* : <span><span>(<span class="type-var">'a</span>, <span class="type-var">'e</span>)</span> <a href="index.html#type-t_let2">t_let2</a></span> <span>-></span> <span>(<span class="type-var">'a</span> <span>-></span> <span><span>(<span class="type-var">'b</span>, <span class="type-var">'e</span>)</span> <a href="index.html#type-t_let2">t_let2</a></span>)</span> <span>-></span> <span><span>(<span class="type-var">'b</span>, <span class="type-var">'e</span>)</span> <a href="index.html#type-t_let2">t_let2</a></span></code></dt><dt class="spec value" id="val-and*"><a href="#val-and*" class="anchor"></a><code><span class="keyword">val</span> and* : <span><span>(<span class="type-var">'a</span>, <span class="type-var">'e</span>)</span> <a href="index.html#type-t_let2">t_let2</a></span> <span>-></span> <span><span>(<span class="type-var">'b</span>, <span class="type-var">'e</span>)</span> <a href="index.html#type-t_let2">t_let2</a></span> <span>-></span> <span><span>(<span class="type-var">'a</span> * <span class="type-var">'b</span>, <span class="type-var">'e</span>)</span> <a href="index.html#type-t_let2">t_let2</a></span></code></dt></dl></details></div></div></div></section><section><header><h3 id="collections"><a href="#collections" class="anchor"></a>Collections</h3></header><dl><dt class="spec value" id="val-flatten_l"><a href="#val-flatten_l" class="anchor"></a><code><span class="keyword">val</span> flatten_l : <span><span><span>(<span class="type-var">'a</span>, <span class="type-var">'err</span>)</span> <a href="index.html#type-t">t</a></span> list</span> <span>-></span> <span><span>(<span><span class="type-var">'a</span> list</span>, <span class="type-var">'err</span>)</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p>Same as <code>map_l id</code>: returns <code>Ok [x1;…;xn]</code> if <code>l=[Ok x1; …; Ok xn]</code>, or the first error otherwise.</p><dl><dt>since</dt><dd>2.7</dd></dl></dd></dl><dl><dt class="spec value" id="val-map_l"><a href="#val-map_l" class="anchor"></a><code><span class="keyword">val</span> map_l : <span>(<span class="type-var">'a</span> <span>-></span> <span><span>(<span class="type-var">'b</span>, <span class="type-var">'err</span>)</span> <a href="index.html#type-t">t</a></span>)</span> <span>-></span> <span><span class="type-var">'a</span> list</span> <span>-></span> <span><span>(<span><span class="type-var">'b</span> list</span>, <span class="type-var">'err</span>)</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p><code>map_l f [a1; …; an]</code> applies the function <code>f</code> to <code>a1, …, an</code> ,and, in case of success for every element, returns the list of <code>Ok</code>-value. Otherwise, it fails and returns the first error encountered. Tail-recursive.</p></dd></dl><dl><dt class="spec value" id="val-fold_l"><a href="#val-fold_l" class="anchor"></a><code><span class="keyword">val</span> fold_l : <span>(<span class="type-var">'b</span> <span>-></span> <span class="type-var">'a</span> <span>-></span> <span><span>(<span class="type-var">'b</span>, <span class="type-var">'err</span>)</span> <a href="index.html#type-t">t</a></span>)</span> <span>-></span> <span class="type-var">'b</span> <span>-></span> <span><span class="type-var">'a</span> list</span> <span>-></span> <span><span>(<span class="type-var">'b</span>, <span class="type-var">'err</span>)</span> <a href="index.html#type-t">t</a></span></code></dt><dt class="spec value" id="val-fold_iter"><a href="#val-fold_iter" class="anchor"></a><code><span class="keyword">val</span> fold_iter : <span>(<span class="type-var">'b</span> <span>-></span> <span class="type-var">'a</span> <span>-></span> <span><span>(<span class="type-var">'b</span>, <span class="type-var">'err</span>)</span> <a href="index.html#type-t">t</a></span>)</span> <span>-></span> <span class="type-var">'b</span> <span>-></span> <span><span class="type-var">'a</span> <a href="index.html#type-iter">iter</a></span> <span>-></span> <span><span>(<span class="type-var">'b</span>, <span class="type-var">'err</span>)</span> <a href="index.html#type-t">t</a></span></code></dt><dd><dl><dt>since</dt><dd>3.0</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-choose"><a href="#val-choose" class="anchor"></a><code><span class="keyword">val</span> choose : <span><span><span>(<span class="type-var">'a</span>, <span class="type-var">'err</span>)</span> <a href="index.html#type-t">t</a></span> list</span> <span>-></span> <span><span>(<span class="type-var">'a</span>, <span><span class="type-var">'err</span> list</span>)</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p><code>choose l</code> selects a member of <code>l</code> that is a <code>Ok _</code> value, or returns <code>Error l</code> otherwise, where <code>l</code> is the list of errors.</p></dd></dl><dl><dt class="spec value" id="val-retry"><a href="#val-retry" class="anchor"></a><code><span class="keyword">val</span> retry : int <span>-></span> <span>(unit <span>-></span> <span><span>(<span class="type-var">'a</span>, <span class="type-var">'err</span>)</span> <a href="index.html#type-t">t</a></span>)</span> <span>-></span> <span><span>(<span class="type-var">'a</span>, <span><span class="type-var">'err</span> list</span>)</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p><code>retry n f</code> calls <code>f</code> at most <code>n</code> times, returning the first result of <code>f ()</code> that doesn't fail. If <code>f</code> fails <code>n</code> times, <code>retry n f</code> fails with the list of successive errors.</p></dd></dl><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-to_opt"><a href="#val-to_opt" class="anchor"></a><code><span class="keyword">val</span> to_opt : <span><span>(<span class="type-var">'a</span>, <span class="type-var">_</span>)</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>Convert a result to an option.</p></dd></dl><dl><dt class="spec value" id="val-of_opt"><a href="#val-of_opt" class="anchor"></a><code><span class="keyword">val</span> of_opt : <span><span class="type-var">'a</span> option</span> <span>-></span> <span><span>(<span class="type-var">'a</span>, string)</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p>Convert an option to a result.</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>(<span class="type-var">'a</span>, <span class="type-var">_</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-iter">iter</a></span></code></dt><dd><dl><dt>since</dt><dd>2.8</dd></dl></dd></dl><dl><dt class="spec value" id="val-to_seq"><a href="#val-to_seq" class="anchor"></a><code><span class="keyword">val</span> to_seq : <span><span>(<span class="type-var">'a</span>, <span class="type-var">_</span>)</span> <a href="index.html#type-t">t</a></span> <span>-></span> <span><span class="type-var">'a</span> Stdlib.Seq.t</span></code></dt><dd><p>Renamed from <code>to_std_seq</code> since 3.0.</p><dl><dt>since</dt><dd>3.0</dd></dl></dd></dl><dl><dt class="spec type" id="type-error"><a href="#type-error" class="anchor"></a><code><span class="keyword">type</span> <span>('a, 'b) error</span></code> = <code>[ </code><table class="variant"><tr id="type-error.Ok" class="anchored"><td class="def constructor"><a href="#type-error.Ok" class="anchor"></a><code>| </code><code>`Ok <span class="keyword">of</span> <span class="type-var">'a</span></code></td></tr><tr id="type-error.Error" class="anchored"><td class="def constructor"><a href="#type-error.Error" class="anchor"></a><code>| </code><code>`Error <span class="keyword">of</span> <span class="type-var">'b</span></code></td></tr></table><code> ]</code></dt></dl><dl><dt class="spec value" id="val-of_err"><a href="#val-of_err" class="anchor"></a><code><span class="keyword">val</span> of_err : <span><span>(<span class="type-var">'a</span>, <span class="type-var">'b</span>)</span> <a href="index.html#type-error">error</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><dl><dt>since</dt><dd>0.17</dd></dl></dd></dl><dl><dt class="spec value" id="val-to_err"><a href="#val-to_err" class="anchor"></a><code><span class="keyword">val</span> to_err : <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>(<span class="type-var">'a</span>, <span class="type-var">'b</span>)</span> <a href="index.html#type-error">error</a></span></code></dt><dd><dl><dt>since</dt><dd>0.17</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><span class="type-var">'a</span> <a href="index.html#type-printer">printer</a></span> <span>-></span> <span><span><span>(<span class="type-var">'a</span>, string)</span> <a href="index.html#type-t">t</a></span> <a href="index.html#type-printer">printer</a></span></code></dt><dt class="spec value" id="val-pp'"><a href="#val-pp'" class="anchor"></a><code><span class="keyword">val</span> pp' : <span><span class="type-var">'a</span> <a href="index.html#type-printer">printer</a></span> <span>-></span> <span><span class="type-var">'e</span> <a href="index.html#type-printer">printer</a></span> <span>-></span> <span><span><span>(<span class="type-var">'a</span>, <span class="type-var">'e</span>)</span> <a href="index.html#type-t">t</a></span> <a href="index.html#type-printer">printer</a></span></code></dt><dd><p>Printer that is generic on the error type.</p></dd></dl></section></div></body></html> |