ocaml-containers/3.2/containers/CCResult/index.html
2021-02-01 10:58:00 -05:00

2 lines
No EOL
46 KiB
HTML
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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 1.5.2"/><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> &#x00BB; 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 &quot;result&quot; 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>&#45;&gt;</span> unit)</span> <span>&#45;&gt;</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>&#45;&gt;</span> <span class="type-var">'a</span> <span>&#45;&gt;</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>&#45;&gt;</span> <span class="type-var">'a</span> <span>&#45;&gt;</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>&#45;&gt;</span> <span class="type-var">'a</span> <span>&#45;&gt;</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>&#45;&gt;</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>&#45;&gt;</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>&#45;&gt;</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>&#45;&gt;</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>&#45;&gt;</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>&#45;&gt;</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>&#45;&gt;</span> <span><span>(<span class="type-var">'a</span>, string)</span> <a href="index.html#type-t">t</a></span> <span>&#45;&gt;</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>&#45;&gt;</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>&#45;&gt;</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 &quot;message(number %d, foo: %B)&quot; 42 true (Error &quot;error)&quot;</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>&#45;&gt;</span> <span class="type-var">'b</span>)</span> <span>&#45;&gt;</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>&#45;&gt;</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>&#45;&gt;</span> <span class="type-var">'err2</span>)</span> <span>&#45;&gt;</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>&#45;&gt;</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>&#45;&gt;</span> <span class="type-var">'b</span>)</span> <span>&#45;&gt;</span> <span>(<span class="type-var">'err1</span> <span>&#45;&gt;</span> <span class="type-var">'err2</span>)</span> <span>&#45;&gt;</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>&#45;&gt;</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>&#45;&gt;</span> unit)</span> <span>&#45;&gt;</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>&#45;&gt;</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>&#45;&gt;</span> unit)</span> <span>&#45;&gt;</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>&#45;&gt;</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>&#45;&gt;</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>&#45;&gt;</span> <span>default:<span class="type-var">'a</span></span> <span>&#45;&gt;</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>&#45;&gt;</span> <span class="type-var">'a</span>)</span> <span>&#45;&gt;</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>&#45;&gt;</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>&#45;&gt;</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>&#45;&gt;</span> <span class="type-var">'a</span>)</span> <span>&#45;&gt;</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>&#45;&gt;</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>&#45;&gt;</span> <span class="type-var">'b</span>)</span> <span>&#45;&gt;</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>&#45;&gt;</span> <span>default:<span class="type-var">'b</span></span> <span>&#45;&gt;</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>&#45;&gt;</span> <span>ok:<span>(<span class="type-var">'a</span> <span>&#45;&gt;</span> <span class="type-var">'b</span>)</span></span> <span>&#45;&gt;</span> <span>err:<span>(<span class="type-var">'err</span> <span>&#45;&gt;</span> <span class="type-var">'b</span>)</span></span> <span>&#45;&gt;</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>&#45;&gt;</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>&#45;&gt;</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>&#45;&gt;</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>&#45;&gt;</span> <span><span class="type-var">'a</span> <a href="index.html#type-equal">equal</a></span> <span>&#45;&gt;</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>&#45;&gt;</span> <span><span class="type-var">'a</span> <a href="index.html#type-ord">ord</a></span> <span>&#45;&gt;</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>&#45;&gt;</span> <span class="type-var">'b</span>)</span></span> <span>&#45;&gt;</span> <span>error:<span>(<span class="type-var">'err</span> <span>&#45;&gt;</span> <span class="type-var">'b</span>)</span></span> <span>&#45;&gt;</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>&#45;&gt;</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>&#45;&gt;</span> <span class="type-var">'b</span> <span>&#45;&gt;</span> <span class="type-var">'a</span>)</span> <span>&#45;&gt;</span> <span class="type-var">'a</span> <span>&#45;&gt;</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>&#45;&gt;</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>&#45;&gt;</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>&#45;&gt;</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>&#45;&gt;</span> <span class="type-var">'a</span>)</span> <span>&#45;&gt;</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>&#45;&gt;</span> <span class="type-var">'a</span>)</span> <span>&#45;&gt;</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>&#45;&gt;</span> <span class="type-var">'a</span>)</span> <span>&#45;&gt;</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>&#45;&gt;</span> <span class="type-var">'b</span>)</span> <span>&#45;&gt;</span> <span class="type-var">'a</span> <span>&#45;&gt;</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>&#45;&gt;</span> <span class="type-var">'b</span> <span>&#45;&gt;</span> <span class="type-var">'c</span>)</span> <span>&#45;&gt;</span> <span class="type-var">'a</span> <span>&#45;&gt;</span> <span class="type-var">'b</span> <span>&#45;&gt;</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>&#45;&gt;</span> <span class="type-var">'b</span> <span>&#45;&gt;</span> <span class="type-var">'c</span> <span>&#45;&gt;</span> <span class="type-var">'d</span>)</span> <span>&#45;&gt;</span> <span class="type-var">'a</span> <span>&#45;&gt;</span> <span class="type-var">'b</span> <span>&#45;&gt;</span> <span class="type-var">'c</span> <span>&#45;&gt;</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>&#45;&gt;</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>&#45;&gt;</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>&#45;&gt;</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>&#45;&gt;</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-(&lt;$&gt;)"><a href="#val-(&lt;$&gt;)" class="anchor"></a><code><span class="keyword">val</span> (&lt;$&gt;) : <span>(<span class="type-var">'a</span> <span>&#45;&gt;</span> <span class="type-var">'b</span>)</span> <span>&#45;&gt;</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>&#45;&gt;</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-(&gt;|=)"><a href="#val-(&gt;|=)" class="anchor"></a><code><span class="keyword">val</span> (&gt;|=) : <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>&#45;&gt;</span> <span>(<span class="type-var">'a</span> <span>&#45;&gt;</span> <span class="type-var">'b</span>)</span> <span>&#45;&gt;</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-(&gt;&gt;=)"><a href="#val-(&gt;&gt;=)" class="anchor"></a><code><span class="keyword">val</span> (&gt;&gt;=) : <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>&#45;&gt;</span> <span>(<span class="type-var">'a</span> <span>&#45;&gt;</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>&#45;&gt;</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 &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></dd></dl><dl><dt class="spec value" id="val-(&lt;*&gt;)"><a href="#val-(&lt;*&gt;)" class="anchor"></a><code><span class="keyword">val</span> (&lt;*&gt;) : <span><span>(<span class="type-var">'a</span> <span>&#45;&gt;</span> <span class="type-var">'b</span>, <span class="type-var">'err</span>)</span> <a href="index.html#type-t">t</a></span> <span>&#45;&gt;</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>&#45;&gt;</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 &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></dd></dl><div><div class="spec include"><div class="doc"><p>Let operators on OCaml &gt;= 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>&#45;&gt;</span> <span>(<span class="type-var">'a</span> <span>&#45;&gt;</span> <span class="type-var">'b</span>)</span> <span>&#45;&gt;</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>&#45;&gt;</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>&#45;&gt;</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>&#45;&gt;</span> <span>(<span class="type-var">'a</span> <span>&#45;&gt;</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>&#45;&gt;</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>&#45;&gt;</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>&#45;&gt;</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 &gt;= 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>&#45;&gt;</span> <span>(<span class="type-var">'a</span> <span>&#45;&gt;</span> <span class="type-var">'b</span>)</span> <span>&#45;&gt;</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>&#45;&gt;</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>&#45;&gt;</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>&#45;&gt;</span> <span>(<span class="type-var">'a</span> <span>&#45;&gt;</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>&#45;&gt;</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>&#45;&gt;</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>&#45;&gt;</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>&#45;&gt;</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>&#45;&gt;</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>&#45;&gt;</span> <span><span class="type-var">'a</span> list</span> <span>&#45;&gt;</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>&#45;&gt;</span> <span class="type-var">'a</span> <span>&#45;&gt;</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>&#45;&gt;</span> <span class="type-var">'b</span> <span>&#45;&gt;</span> <span><span class="type-var">'a</span> list</span> <span>&#45;&gt;</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>&#45;&gt;</span> <span class="type-var">'a</span> <span>&#45;&gt;</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>&#45;&gt;</span> <span class="type-var">'b</span> <span>&#45;&gt;</span> <span><span class="type-var">'a</span> <a href="index.html#type-iter">iter</a></span> <span>&#45;&gt;</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>&#45;&gt;</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>&#45;&gt;</span> <span>(unit <span>&#45;&gt;</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>&#45;&gt;</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>&#45;&gt;</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>&#45;&gt;</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>&#45;&gt;</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>&#45;&gt;</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>&#45;&gt;</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>&#45;&gt;</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>&#45;&gt;</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>&#45;&gt;</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>&#45;&gt;</span> <span><span class="type-var">'e</span> <a href="index.html#type-printer">printer</a></span> <span>&#45;&gt;</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>