ocaml-containers/dev/containers/CCResult/index.html
2022-08-05 19:43:04 +00:00

17 lines
No EOL
51 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!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 2.1.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</a> &#x00BB; CCResult</nav><header class="odoc-preamble"><h1>Module <code><span>CCResult</span></code></h1><p>Error Monad</p><p>Uses the new &quot;result&quot; type from OCaml 4.03.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.16</li></ul></header><nav class="odoc-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><div class="odoc-content"><div class="odoc-spec"><div class="spec type" id="type-iter" class="anchored"><a href="#type-iter" class="anchor"></a><code><span><span class="keyword">type</span> <span>'a iter</span></span><span> = <span><span>( <span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> unit )</span> <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Fast internal iterator.</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 type" id="type-equal" class="anchored"><a href="#type-equal" class="anchor"></a><code><span><span class="keyword">type</span> <span>'a equal</span></span><span> = <span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> bool</span></code></div></div><div class="odoc-spec"><div class="spec type" id="type-ord" class="anchored"><a href="#type-ord" class="anchor"></a><code><span><span class="keyword">type</span> <span>'a ord</span></span><span> = <span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> int</span></code></div></div><div class="odoc-spec"><div class="spec type" id="type-printer" class="anchored"><a href="#type-printer" class="anchor"></a><code><span><span class="keyword">type</span> <span>'a printer</span></span><span> = <span><span class="xref-unresolved">Stdlib</span>.Format.formatter <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> unit</span></code></div></div><h3 id="basics"><a href="#basics" class="anchor"></a>Basics</h3><div class="odoc-spec"><div class="spec type" id="type-result" class="anchored"><a href="#type-result" class="anchor"></a><code><span><span class="keyword">type</span> <span class="keyword">nonrec</span> <span>(+'good, +'bad) result</span></span><span> = <span><span>( <span class="type-var">'good</span>, <span class="type-var">'bad</span> )</span> <span class="xref-unresolved">Stdlib</span>.result</span></span><span> = </span></code><table><tr id="type-result.Ok" class="anchored"><td class="def variant constructor"><a href="#type-result.Ok" class="anchor"></a><code><span>| </span><span><span class="constructor">Ok</span> <span class="keyword">of</span> <span class="type-var">'good</span></span></code></td></tr><tr id="type-result.Error" class="anchored"><td class="def variant constructor"><a href="#type-result.Error" class="anchor"></a><code><span>| </span><span><span class="constructor">Error</span> <span class="keyword">of</span> <span class="type-var">'bad</span></span></code></td></tr></table></div></div><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>(+'good, +'bad) t</span></span><span> = <span><span>( <span class="type-var">'good</span>, <span class="type-var">'bad</span> )</span> <a href="#type-result">result</a></span></span><span> = </span></code><table><tr id="type-t.Ok" class="anchored"><td class="def variant constructor"><a href="#type-t.Ok" class="anchor"></a><code><span>| </span><span><span class="constructor">Ok</span> <span class="keyword">of</span> <span class="type-var">'good</span></span></code></td></tr><tr id="type-t.Error" class="anchored"><td class="def variant constructor"><a href="#type-t.Error" class="anchor"></a><code><span>| </span><span><span class="constructor">Error</span> <span class="keyword">of</span> <span class="type-var">'bad</span></span></code></td></tr></table></div></div><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">&#45;&gt;</span></span> <span><span>( <span class="type-var">'a</span>, <span class="type-var">'err</span> )</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p>Successfully return a value.</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><span class="type-var">'err</span> <span class="arrow">&#45;&gt;</span></span> <span><span>( <span class="type-var">'a</span>, <span class="type-var">'err</span> )</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p>Fail with an error.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-of_exn" class="anchored"><a href="#val-of_exn" class="anchor"></a><code><span><span class="keyword">val</span> of_exn : <span>exn <span class="arrow">&#45;&gt;</span></span> <span><span>( <span class="type-var">'a</span>, string )</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>of_exn e</code> uses <code>Printexc</code> to print the exception as a string.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-of_exn_trace" class="anchored"><a href="#val-of_exn_trace" class="anchor"></a><code><span><span class="keyword">val</span> of_exn_trace : <span>exn <span class="arrow">&#45;&gt;</span></span> <span><span>( <span class="type-var">'a</span>, string )</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><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></div></div><div class="odoc-spec"><div class="spec value" id="val-fail_printf" class="anchored"><a href="#val-fail_printf" class="anchor"></a><code><span><span class="keyword">val</span> fail_printf :
<span><span><span>( <span class="type-var">'a</span>, <span class="xref-unresolved">Stdlib</span>.Buffer.t, unit, <span><span>( <span class="type-var">'b</span>, string )</span> <a href="#type-t">t</a></span> )</span> <span class="xref-unresolved">Stdlib</span>.format4</span> <span class="arrow">&#45;&gt;</span></span>
<span class="type-var">'a</span></span></code></div><div class="spec-doc"><p><code>fail_printf format</code> uses <code>format</code> to obtain an error message and then returns <code>Error msg</code>.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-fail_fprintf" class="anchored"><a href="#val-fail_fprintf" class="anchor"></a><code><span><span class="keyword">val</span> fail_fprintf :
<span><span><span>( <span class="type-var">'a</span>, <span class="xref-unresolved">Stdlib</span>.Format.formatter, unit, <span><span>( <span class="type-var">'b</span>, string )</span> <a href="#type-t">t</a></span> )</span> <span class="xref-unresolved">Stdlib</span>.format4</span> <span class="arrow">&#45;&gt;</span></span>
<span class="type-var">'a</span></span></code></div><div class="spec-doc"><p><code>fail_fprintf format</code> uses <code>format</code> to obtain an error message and then returns <code>Error msg</code>.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-add_ctx" class="anchored"><a href="#val-add_ctx" class="anchor"></a><code><span><span class="keyword">val</span> add_ctx : <span>string <span class="arrow">&#45;&gt;</span></span> <span><span><span>( <span class="type-var">'a</span>, string )</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span>( <span class="type-var">'a</span>, string )</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><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><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 1.2</li></ul></div></div><div class="odoc-spec"><div class="spec value" id="val-add_ctxf" class="anchored"><a href="#val-add_ctxf" class="anchor"></a><code><span><span class="keyword">val</span> add_ctxf :
<span><span><span>( <span class="type-var">'a</span>, <span class="xref-unresolved">Stdlib</span>.Format.formatter, unit, <span><span><span>( <span class="type-var">'b</span>, string )</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span>( <span class="type-var">'b</span>, string )</span> <a href="#type-t">t</a></span> )</span>
<span class="xref-unresolved">Stdlib</span>.format4</span> <span class="arrow">&#45;&gt;</span></span>
<span class="type-var">'a</span></span></code></div><div class="spec-doc"><p><code>add_ctxf format_message</code> is similar to <a href="#val-add_ctx"><code>add_ctx</code></a> but with <code>Format</code> for printing the message (eagerly). Example:</p><pre><code>add_ctxf &quot;message(number %d, foo: %B)&quot; 42 true (Error &quot;error)&quot;</code></pre><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 1.2</li></ul></div></div><div class="odoc-spec"><div class="spec value" id="val-opt_map" class="anchored"><a href="#val-opt_map" class="anchor"></a><code><span><span class="keyword">val</span> opt_map : <span><span>( <span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> <span><span>( <span class="type-var">'b</span>, <span class="type-var">'c</span> )</span> <a href="#type-t">t</a></span> )</span> <span class="arrow">&#45;&gt;</span></span> <span><span><span class="type-var">'a</span> option</span> <span class="arrow">&#45;&gt;</span></span> <span><span>( <span><span class="type-var">'b</span> option</span>, <span class="type-var">'c</span> )</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p>Map a fallible operation through an option.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 3.7</li></ul></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">&#45;&gt;</span></span> <span class="type-var">'b</span> )</span> <span class="arrow">&#45;&gt;</span></span> <span><span><span>( <span class="type-var">'a</span>, <span class="type-var">'err</span> )</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span>( <span class="type-var">'b</span>, <span class="type-var">'err</span> )</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p>Map on success.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-map_err" class="anchored"><a href="#val-map_err" class="anchor"></a><code><span><span class="keyword">val</span> map_err : <span><span>( <span><span class="type-var">'err1</span> <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'err2</span> )</span> <span class="arrow">&#45;&gt;</span></span> <span><span><span>( <span class="type-var">'a</span>, <span class="type-var">'err1</span> )</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span>( <span class="type-var">'a</span>, <span class="type-var">'err2</span> )</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p>Map on the error variant.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-map2" class="anchored"><a href="#val-map2" class="anchor"></a><code><span><span class="keyword">val</span> map2 :
<span><span>( <span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'b</span> )</span> <span class="arrow">&#45;&gt;</span></span>
<span><span>( <span><span class="type-var">'err1</span> <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'err2</span> )</span> <span class="arrow">&#45;&gt;</span></span>
<span><span><span>( <span class="type-var">'a</span>, <span class="type-var">'err1</span> )</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span>
<span><span>( <span class="type-var">'b</span>, <span class="type-var">'err2</span> )</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p>Like <a href="#val-map"><code>map</code></a>, but also with a function that can transform the error message in case of failure.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-iter" class="anchored"><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">&#45;&gt;</span></span> unit )</span> <span class="arrow">&#45;&gt;</span></span> <span><span><span>( <span class="type-var">'a</span>, <span class="type-var">_</span> )</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Apply the function only in case of <code>Ok</code>.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-iter_err" class="anchored"><a href="#val-iter_err" class="anchor"></a><code><span><span class="keyword">val</span> iter_err : <span><span>( <span><span class="type-var">'err</span> <span class="arrow">&#45;&gt;</span></span> unit )</span> <span class="arrow">&#45;&gt;</span></span> <span><span><span>( <span class="type-var">_</span>, <span class="type-var">'err</span> )</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> unit</span></code></div><div class="spec-doc"><p>Apply the function in case of <code>Error</code>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 2.4</li></ul></div></div><div class="odoc-spec"><div class="spec exception" id="exception-Get_error" class="anchored"><a href="#exception-Get_error" class="anchor"></a><code><span><span class="keyword">exception</span> </span><span><span class="exception">Get_error</span></span></code></div></div><div class="odoc-spec"><div class="spec value" id="val-get_exn" class="anchored"><a href="#val-get_exn" class="anchor"></a><code><span><span class="keyword">val</span> get_exn : <span><span><span>( <span class="type-var">'a</span>, <span class="type-var">_</span> )</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'a</span></span></code></div><div class="spec-doc"><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><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <span class="value">Get_error</span> <p>if the value is an error.</p></li></ul></div></div><div class="odoc-spec"><div class="spec value" id="val-get_or" class="anchored"><a href="#val-get_or" class="anchor"></a><code><span><span class="keyword">val</span> get_or : <span><span><span>( <span class="type-var">'a</span>, <span class="type-var">_</span> )</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span>default:<span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'a</span></span></code></div><div class="spec-doc"><p><code>get_or e ~default</code> returns <code>x</code> if <code>e = Ok x</code>, <code>default</code> otherwise.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-get_or_failwith" class="anchored"><a href="#val-get_or_failwith" class="anchor"></a><code><span><span class="keyword">val</span> get_or_failwith : <span><span><span>( <span class="type-var">'a</span>, string )</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'a</span></span></code></div><div class="spec-doc"><p><code>get_or_failwith e</code> returns <code>x</code> if <code>e = Ok x</code>, fails otherwise.</p><ul class="at-tags"><li class="raises"><span class="at-tag">raises</span> <span class="value">Failure</span> <p>with <code>msg</code> if <code>e = Error msg</code>.</p></li></ul><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 2.4</li></ul></div></div><div class="odoc-spec"><div class="spec value" id="val-get_lazy" class="anchored"><a href="#val-get_lazy" class="anchor"></a><code><span><span class="keyword">val</span> get_lazy : <span><span>( <span><span class="type-var">'b</span> <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'a</span> )</span> <span class="arrow">&#45;&gt;</span></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 class="arrow">&#45;&gt;</span></span> <span class="type-var">'a</span></span></code></div><div class="spec-doc"><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><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 3.0</li></ul></div></div><div class="odoc-spec"><div class="spec value" id="val-map_or" class="anchored"><a href="#val-map_or" class="anchor"></a><code><span><span class="keyword">val</span> map_or : <span><span>( <span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'b</span> )</span> <span class="arrow">&#45;&gt;</span></span> <span><span><span>( <span class="type-var">'a</span>, <span class="type-var">'c</span> )</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span>default:<span class="type-var">'b</span> <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'b</span></span></code></div><div class="spec-doc"><p><code>map_or f e ~default</code> returns <code>f x</code> if <code>e = Ok x</code>, <code>default</code> otherwise.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-catch" class="anchored"><a href="#val-catch" class="anchor"></a><code><span><span class="keyword">val</span> catch : <span><span><span>( <span class="type-var">'a</span>, <span class="type-var">'err</span> )</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span>ok:<span>( <span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'b</span> )</span> <span class="arrow">&#45;&gt;</span></span> <span>err:<span>( <span><span class="type-var">'err</span> <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'b</span> )</span> <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'b</span></span></code></div><div class="spec-doc"><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></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">&#45;&gt;</span></span> <span><span>( <span class="type-var">'b</span>, <span class="type-var">'err</span> )</span> <a href="#type-t">t</a></span> )</span> <span class="arrow">&#45;&gt;</span></span> <span><span><span>( <span class="type-var">'a</span>, <span class="type-var">'err</span> )</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span>( <span class="type-var">'b</span>, <span class="type-var">'err</span> )</span> <a href="#type-t">t</a></span></span></code></div></div><div class="odoc-spec"><div class="spec value" id="val-equal" class="anchored"><a href="#val-equal" class="anchor"></a><code><span><span class="keyword">val</span> equal : <span>err:<span><span class="type-var">'err</span> <a href="#type-equal">equal</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span><span class="type-var">'a</span> <a href="#type-equal">equal</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span><span>( <span class="type-var">'a</span>, <span class="type-var">'err</span> )</span> <a href="#type-t">t</a></span> <a href="#type-equal">equal</a></span></span></code></div></div><div class="odoc-spec"><div class="spec value" id="val-compare" class="anchored"><a href="#val-compare" class="anchor"></a><code><span><span class="keyword">val</span> compare : <span>err:<span><span class="type-var">'err</span> <a href="#type-ord">ord</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span><span class="type-var">'a</span> <a href="#type-ord">ord</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span><span>( <span class="type-var">'a</span>, <span class="type-var">'err</span> )</span> <a href="#type-t">t</a></span> <a href="#type-ord">ord</a></span></span></code></div></div><div class="odoc-spec"><div class="spec value" id="val-fold" class="anchored"><a href="#val-fold" class="anchor"></a><code><span><span class="keyword">val</span> fold : <span>ok:<span>( <span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'b</span> )</span> <span class="arrow">&#45;&gt;</span></span> <span>error:<span>( <span><span class="type-var">'err</span> <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'b</span> )</span> <span class="arrow">&#45;&gt;</span></span> <span><span><span>( <span class="type-var">'a</span>, <span class="type-var">'err</span> )</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'b</span></span></code></div><div class="spec-doc"><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></div></div><div class="odoc-spec"><div class="spec value" id="val-fold_ok" class="anchored"><a href="#val-fold_ok" class="anchor"></a><code><span><span class="keyword">val</span> fold_ok : <span><span>( <span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'b</span> <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'a</span> )</span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> <span><span><span>( <span class="type-var">'b</span>, <span class="type-var">_</span> )</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'a</span></span></code></div><div class="spec-doc"><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><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 1.2</li></ul></div></div><div class="odoc-spec"><div class="spec value" id="val-is_ok" class="anchored"><a href="#val-is_ok" class="anchor"></a><code><span><span class="keyword">val</span> is_ok : <span><span><span>( <span class="type-var">'a</span>, <span class="type-var">'err</span> )</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> bool</span></code></div><div class="spec-doc"><p>Return true if <code>Ok</code>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 1.0</li></ul></div></div><div class="odoc-spec"><div class="spec value" id="val-is_error" class="anchored"><a href="#val-is_error" class="anchor"></a><code><span><span class="keyword">val</span> is_error : <span><span><span>( <span class="type-var">'a</span>, <span class="type-var">'err</span> )</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> bool</span></code></div><div class="spec-doc"><p>Return true if <code>Error</code>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 1.0</li></ul></div></div><h3 id="wrappers"><a href="#wrappers" class="anchor"></a>Wrappers</h3><div class="odoc-spec"><div class="spec value" id="val-guard" class="anchored"><a href="#val-guard" class="anchor"></a><code><span><span class="keyword">val</span> guard : <span><span>( <span>unit <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'a</span> )</span> <span class="arrow">&#45;&gt;</span></span> <span><span>( <span class="type-var">'a</span>, exn )</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><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></div></div><div class="odoc-spec"><div class="spec value" id="val-guard_str" class="anchored"><a href="#val-guard_str" class="anchor"></a><code><span><span class="keyword">val</span> guard_str : <span><span>( <span>unit <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'a</span> )</span> <span class="arrow">&#45;&gt;</span></span> <span><span>( <span class="type-var">'a</span>, string )</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p>Like <a href="#val-guard"><code>guard</code></a> but uses <a href="#val-of_exn"><code>of_exn</code></a> to print the exception.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-guard_str_trace" class="anchored"><a href="#val-guard_str_trace" class="anchor"></a><code><span><span class="keyword">val</span> guard_str_trace : <span><span>( <span>unit <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'a</span> )</span> <span class="arrow">&#45;&gt;</span></span> <span><span>( <span class="type-var">'a</span>, string )</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p>Like <a href="#val-guard_str"><code>guard_str</code></a> but uses <a href="#val-of_exn_trace"><code>of_exn_trace</code></a> instead of <a href="#val-of_exn"><code>of_exn</code></a> so that the stack trace is printed.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-wrap1" class="anchored"><a href="#val-wrap1" class="anchor"></a><code><span><span class="keyword">val</span> wrap1 : <span><span>( <span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'b</span> )</span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> <span><span>( <span class="type-var">'b</span>, exn )</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p>Like <a href="#val-guard"><code>guard</code></a> but gives the function one argument.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-wrap2" class="anchored"><a href="#val-wrap2" class="anchor"></a><code><span><span class="keyword">val</span> wrap2 : <span><span>( <span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'b</span> <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'c</span> )</span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'b</span> <span class="arrow">&#45;&gt;</span></span> <span><span>( <span class="type-var">'c</span>, exn )</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p>Like <a href="#val-guard"><code>guard</code></a> but gives the function two arguments.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-wrap3" class="anchored"><a href="#val-wrap3" class="anchor"></a><code><span><span class="keyword">val</span> wrap3 : <span><span>( <span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'b</span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'c</span> <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'d</span> )</span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'b</span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'c</span> <span class="arrow">&#45;&gt;</span></span> <span><span>( <span class="type-var">'d</span>, exn )</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p>Like <a href="#val-guard"><code>guard</code></a> but gives the function three arguments.</p></div></div><h3 id="applicative"><a href="#applicative" class="anchor"></a>Applicative</h3><div class="odoc-spec"><div class="spec value" id="val-pure" class="anchored"><a href="#val-pure" class="anchor"></a><code><span><span class="keyword">val</span> pure : <span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> <span><span>( <span class="type-var">'a</span>, <span class="type-var">'err</span> )</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p>Synonym of <a href="#val-return"><code>return</code></a>.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-join" class="anchored"><a href="#val-join" class="anchor"></a><code><span><span class="keyword">val</span> join : <span><span><span>( <span><span>( <span class="type-var">'a</span>, <span class="type-var">'err</span> )</span> <a href="#type-t">t</a></span>, <span class="type-var">'err</span> )</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span>( <span class="type-var">'a</span>, <span class="type-var">'err</span> )</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><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></div></div><div class="odoc-spec"><div class="spec value" id="val-both" class="anchored"><a href="#val-both" class="anchor"></a><code><span><span class="keyword">val</span> both : <span><span><span>( <span class="type-var">'a</span>, <span class="type-var">'err</span> )</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span><span>( <span class="type-var">'b</span>, <span class="type-var">'err</span> )</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</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="#type-t">t</a></span></span></code></div><div class="spec-doc"><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></div></div><h3 id="infix"><a href="#infix" class="anchor"></a>Infix</h3><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> <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-include"><details open="open"><summary class="spec include"><code><span><span class="keyword">include</span> <span class="keyword">module</span> <span class="keyword">type</span> <span class="keyword">of</span> <a href="Infix/index.html">Infix</a></span></code></summary><div class="odoc-spec"><div class="spec value" id="val-(&lt;$&gt;)" class="anchored"><a href="#val-(&lt;$&gt;)" class="anchor"></a><code><span><span class="keyword">val</span> (&lt;$&gt;) : <span><span>( <span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'b</span> )</span> <span class="arrow">&#45;&gt;</span></span> <span><span><span>( <span class="type-var">'a</span>, <span class="type-var">'err</span> )</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span>( <span class="type-var">'b</span>, <span class="type-var">'err</span> )</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p>Infix version of <code>map</code>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 3.0</li></ul></div></div><div class="odoc-spec"><div class="spec value" id="val-(&gt;|=)" class="anchored"><a href="#val-(&gt;|=)" class="anchor"></a><code><span><span class="keyword">val</span> (&gt;|=) : <span><span><span>( <span class="type-var">'a</span>, <span class="type-var">'err</span> )</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span>( <span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'b</span> )</span> <span class="arrow">&#45;&gt;</span></span> <span><span>( <span class="type-var">'b</span>, <span class="type-var">'err</span> )</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p>Infix version of <code>map</code> with reversed arguments.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-(&gt;&gt;=)" class="anchored"><a href="#val-(&gt;&gt;=)" class="anchor"></a><code><span><span class="keyword">val</span> (&gt;&gt;=) : <span><span><span>( <span class="type-var">'a</span>, <span class="type-var">'err</span> )</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span>( <span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> <span><span>( <span class="type-var">'b</span>, <span class="type-var">'err</span> )</span> <a href="#type-t">t</a></span> )</span> <span class="arrow">&#45;&gt;</span></span> <span><span>( <span class="type-var">'b</span>, <span class="type-var">'err</span> )</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p>Monadic composition. <code>e &gt;&gt;= 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></div></div><div class="odoc-spec"><div class="spec value" id="val-(&lt;*&gt;)" class="anchored"><a href="#val-(&lt;*&gt;)" class="anchor"></a><code><span><span class="keyword">val</span> (&lt;*&gt;) : <span><span><span>( <span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'b</span>, <span class="type-var">'err</span> )</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span><span>( <span class="type-var">'a</span>, <span class="type-var">'err</span> )</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span>( <span class="type-var">'b</span>, <span class="type-var">'err</span> )</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>a &lt;*&gt; 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></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>( <span class="type-var">'a</span>, <span class="type-var">'e</span> )</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span>( <span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> <span class="type-var">'b</span> )</span> <span class="arrow">&#45;&gt;</span></span> <span><span>( <span class="type-var">'b</span>, <span class="type-var">'e</span> )</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><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-and+" class="anchored"><a href="#val-and+" class="anchor"></a><code><span><span class="keyword">val</span> and+ : <span><span><span>( <span class="type-var">'a</span>, <span class="type-var">'e</span> )</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span><span>( <span class="type-var">'b</span>, <span class="type-var">'e</span> )</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</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="#type-t">t</a></span></span></code></div><div class="spec-doc"><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-let*" class="anchored"><a href="#val-let*" class="anchor"></a><code><span><span class="keyword">val</span> let* : <span><span><span>( <span class="type-var">'a</span>, <span class="type-var">'e</span> )</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span>( <span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> <span><span>( <span class="type-var">'b</span>, <span class="type-var">'e</span> )</span> <a href="#type-t">t</a></span> )</span> <span class="arrow">&#45;&gt;</span></span> <span><span>( <span class="type-var">'b</span>, <span class="type-var">'e</span> )</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><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-and*" class="anchored"><a href="#val-and*" class="anchor"></a><code><span><span class="keyword">val</span> and* : <span><span><span>( <span class="type-var">'a</span>, <span class="type-var">'e</span> )</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span><span>( <span class="type-var">'b</span>, <span class="type-var">'e</span> )</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</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="#type-t">t</a></span></span></code></div><div class="spec-doc"><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 2.8</li></ul></div></div></details></div><h3 id="collections"><a href="#collections" class="anchor"></a>Collections</h3><div class="odoc-spec"><div class="spec value" id="val-flatten_l" class="anchored"><a href="#val-flatten_l" class="anchor"></a><code><span><span class="keyword">val</span> flatten_l : <span><span><span><span>( <span class="type-var">'a</span>, <span class="type-var">'err</span> )</span> <a href="#type-t">t</a></span> list</span> <span class="arrow">&#45;&gt;</span></span> <span><span>( <span><span class="type-var">'a</span> list</span>, <span class="type-var">'err</span> )</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><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><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 2.7</li></ul></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">&#45;&gt;</span></span> <span><span>( <span class="type-var">'b</span>, <span class="type-var">'err</span> )</span> <a href="#type-t">t</a></span> )</span> <span class="arrow">&#45;&gt;</span></span> <span><span><span class="type-var">'a</span> list</span> <span class="arrow">&#45;&gt;</span></span> <span><span>( <span><span class="type-var">'b</span> list</span>, <span class="type-var">'err</span> )</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><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></div></div><div class="odoc-spec"><div class="spec value" id="val-fold_l" class="anchored"><a href="#val-fold_l" class="anchor"></a><code><span><span class="keyword">val</span> fold_l : <span><span>( <span><span class="type-var">'b</span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> <span><span>( <span class="type-var">'b</span>, <span class="type-var">'err</span> )</span> <a href="#type-t">t</a></span> )</span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'b</span> <span class="arrow">&#45;&gt;</span></span> <span><span><span class="type-var">'a</span> list</span> <span class="arrow">&#45;&gt;</span></span> <span><span>( <span class="type-var">'b</span>, <span class="type-var">'err</span> )</span> <a href="#type-t">t</a></span></span></code></div></div><div class="odoc-spec"><div class="spec value" id="val-fold_iter" class="anchored"><a href="#val-fold_iter" class="anchor"></a><code><span><span class="keyword">val</span> fold_iter :
<span><span>( <span><span class="type-var">'b</span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <span class="arrow">&#45;&gt;</span></span> <span><span>( <span class="type-var">'b</span>, <span class="type-var">'err</span> )</span> <a href="#type-t">t</a></span> )</span> <span class="arrow">&#45;&gt;</span></span>
<span><span class="type-var">'b</span> <span class="arrow">&#45;&gt;</span></span>
<span><span><span class="type-var">'a</span> <a href="#type-iter">iter</a></span> <span class="arrow">&#45;&gt;</span></span>
<span><span>( <span class="type-var">'b</span>, <span class="type-var">'err</span> )</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 3.0</li></ul></div></div><h3 id="misc"><a href="#misc" class="anchor"></a>Misc</h3><div class="odoc-spec"><div class="spec value" id="val-choose" class="anchored"><a href="#val-choose" class="anchor"></a><code><span><span class="keyword">val</span> choose : <span><span><span><span>( <span class="type-var">'a</span>, <span class="type-var">'err</span> )</span> <a href="#type-t">t</a></span> list</span> <span class="arrow">&#45;&gt;</span></span> <span><span>( <span class="type-var">'a</span>, <span><span class="type-var">'err</span> list</span> )</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><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></div></div><div class="odoc-spec"><div class="spec value" id="val-retry" class="anchored"><a href="#val-retry" class="anchor"></a><code><span><span class="keyword">val</span> retry : <span>int <span class="arrow">&#45;&gt;</span></span> <span><span>( <span>unit <span class="arrow">&#45;&gt;</span></span> <span><span>( <span class="type-var">'a</span>, <span class="type-var">'err</span> )</span> <a href="#type-t">t</a></span> )</span> <span class="arrow">&#45;&gt;</span></span> <span><span>( <span class="type-var">'a</span>, <span><span class="type-var">'err</span> list</span> )</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><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></div></div><div class="odoc-spec"><div class="spec module-type" id="module-type-MONAD" class="anchored"><a href="#module-type-MONAD" class="anchor"></a><code><span><span class="keyword">module</span> <span class="keyword">type</span> <a href="module-type-MONAD/index.html">MONAD</a></span><span> = <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div></div><div class="odoc-spec"><div class="spec module" id="module-Traverse" class="anchored"><a href="#module-Traverse" class="anchor"></a><code><span><span class="keyword">module</span> <a href="Traverse/index.html">Traverse</a></span><span> (<a href="Traverse/argument-1-M/index.html">M</a> : <a href="module-type-MONAD/index.html">MONAD</a>) : <span class="keyword">sig</span> ... <span class="keyword">end</span></span></code></div></div><h3 id="conversions"><a href="#conversions" class="anchor"></a>Conversions</h3><div class="odoc-spec"><div class="spec value" id="val-to_opt" class="anchored"><a href="#val-to_opt" class="anchor"></a><code><span><span class="keyword">val</span> to_opt : <span><span><span>( <span class="type-var">'a</span>, <span class="type-var">_</span> )</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> option</span></span></code></div><div class="spec-doc"><p>Convert a result to an option.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-of_opt" class="anchored"><a href="#val-of_opt" class="anchor"></a><code><span><span class="keyword">val</span> of_opt : <span><span><span class="type-var">'a</span> option</span> <span class="arrow">&#45;&gt;</span></span> <span><span>( <span class="type-var">'a</span>, string )</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>of_opt opt</code> converts <code>Some v</code> to <code>Ok v</code> and <code>None</code> to <code>Error &quot;of_opt&quot;</code>.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-to_iter" class="anchored"><a href="#val-to_iter" class="anchor"></a><code><span><span class="keyword">val</span> to_iter : <span><span><span>( <span class="type-var">'a</span>, <span class="type-var">_</span> )</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <a href="#type-iter">iter</a></span></span></code></div><div class="spec-doc"><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-to_seq" class="anchored"><a href="#val-to_seq" class="anchor"></a><code><span><span class="keyword">val</span> to_seq : <span><span><span>( <span class="type-var">'a</span>, <span class="type-var">_</span> )</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span class="type-var">'a</span> <span class="xref-unresolved">Stdlib</span>.Seq.t</span></span></code></div><div class="spec-doc"><p>Renamed from <code>to_std_seq</code> since 3.0.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 3.0</li></ul></div></div><div class="odoc-spec"><div class="spec type" id="type-error" class="anchored"><a href="#type-error" class="anchor"></a><code><span><span class="keyword">type</span> <span>('a, 'b) error</span></span><span> = </span><span>[ </span></code><table><tr id="type-error.Ok" class="anchored"><td class="def constructor"><a href="#type-error.Ok" class="anchor"></a><code><span>| </span></code><code><span>`Ok <span class="keyword">of</span> <span class="type-var">'a</span></span></code></td></tr><tr id="type-error.Error" class="anchored"><td class="def constructor"><a href="#type-error.Error" class="anchor"></a><code><span>| </span></code><code><span>`Error <span class="keyword">of</span> <span class="type-var">'b</span></span></code></td></tr></table><code><span> ]</span></code></div></div><div class="odoc-spec"><div class="spec value" id="val-of_err" class="anchored"><a href="#val-of_err" class="anchor"></a><code><span><span class="keyword">val</span> of_err : <span><span><span>( <span class="type-var">'a</span>, <span class="type-var">'b</span> )</span> <a href="#type-error">error</a></span> <span class="arrow">&#45;&gt;</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 class="spec-doc"><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.17</li></ul></div></div><div class="odoc-spec"><div class="spec value" id="val-to_err" class="anchored"><a href="#val-to_err" class="anchor"></a><code><span><span class="keyword">val</span> to_err : <span><span><span>( <span class="type-var">'a</span>, <span class="type-var">'b</span> )</span> <a href="#type-t">t</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span>( <span class="type-var">'a</span>, <span class="type-var">'b</span> )</span> <a href="#type-error">error</a></span></span></code></div><div class="spec-doc"><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.17</li></ul></div></div><h3 id="io"><a href="#io" class="anchor"></a>IO</h3><div class="odoc-spec"><div class="spec value" id="val-pp" class="anchored"><a href="#val-pp" class="anchor"></a><code><span><span class="keyword">val</span> pp : <span><span><span class="type-var">'a</span> <a href="#type-printer">printer</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span><span>( <span class="type-var">'a</span>, string )</span> <a href="#type-t">t</a></span> <a href="#type-printer">printer</a></span></span></code></div></div><div class="odoc-spec"><div class="spec value" id="val-pp'" class="anchored"><a href="#val-pp'" class="anchor"></a><code><span><span class="keyword">val</span> pp' : <span><span><span class="type-var">'a</span> <a href="#type-printer">printer</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span><span class="type-var">'e</span> <a href="#type-printer">printer</a></span> <span class="arrow">&#45;&gt;</span></span> <span><span><span>( <span class="type-var">'a</span>, <span class="type-var">'e</span> )</span> <a href="#type-t">t</a></span> <a href="#type-printer">printer</a></span></span></code></div><div class="spec-doc"><p>Printer that is generic on the error type.</p></div></div></div></body></html>