mirror of
https://github.com/c-cube/ocaml-containers.git
synced 2025-12-06 03:05:28 -05:00
6 lines
50 KiB
HTML
6 lines
50 KiB
HTML
<!DOCTYPE html>
|
||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>CCResult (containers.CCResult)</title><link rel="stylesheet" href="../../_odoc-theme/odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.3.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> » CCResult</nav><header class="odoc-preamble"><h1>Module <code><span>CCResult</span></code></h1><p>Error Monad</p><p>Uses the new "result" 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 anchored" id="type-iter"><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">-></span></span> unit)</span> <span class="arrow">-></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 anchored" id="type-equal"><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">-></span></span> <span><span class="type-var">'a</span> <span class="arrow">-></span></span> bool</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-ord"><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">-></span></span> <span><span class="type-var">'a</span> <span class="arrow">-></span></span> int</span></code></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-printer"><a href="#type-printer" class="anchor"></a><code><span><span class="keyword">type</span> <span>'a printer</span></span><span> = <span><a href="../../ocaml/Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a> <span class="arrow">-></span></span> <span><span class="type-var">'a</span> <span class="arrow">-></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 anchored" id="type-result"><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> <a href="../../ocaml/Stdlib/index.html#type-result">result</a></span></span><span> = </span></code><ol><li id="type-result.Ok" class="def variant constructor anchored"><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></li><li id="type-result.Error" class="def variant constructor anchored"><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></li></ol></div></div><div class="odoc-spec"><div class="spec type anchored" id="type-t"><a href="#type-t" class="anchor"></a><code><span><span class="keyword">type</span> <span>(+'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><ol><li id="type-t.Ok" class="def variant constructor anchored"><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></li><li id="type-t.Error" class="def variant constructor anchored"><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></li></ol></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-return"><a href="#val-return" class="anchor"></a><code><span><span class="keyword">val</span> return : <span><span class="type-var">'a</span> <span class="arrow">-></span></span> <span><span>(<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 anchored" id="val-fail"><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">-></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 anchored" id="val-of_exn"><a href="#val-of_exn" class="anchor"></a><code><span><span class="keyword">val</span> of_exn : <span>exn <span class="arrow">-></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 anchored" id="val-of_exn_trace"><a href="#val-of_exn_trace" class="anchor"></a><code><span><span class="keyword">val</span> of_exn_trace : <span>exn <span class="arrow">-></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 anchored" id="val-fail_printf"><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>, <a href="../../ocaml/Stdlib/Buffer/index.html#type-t">Stdlib.Buffer.t</a>, unit, <span><span>(<span class="type-var">'b</span>, string)</span> <a href="#type-t">t</a></span>)</span> <a href="../../ocaml/Stdlib/index.html#type-format4">format4</a></span> <span class="arrow">-></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 anchored" id="val-fail_fprintf"><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>, <a href="../../ocaml/Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a>, unit, <span><span>(<span class="type-var">'b</span>, string)</span> <a href="#type-t">t</a></span>)</span> <a href="../../ocaml/Stdlib/index.html#type-format4">format4</a></span> <span class="arrow">-></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 anchored" id="val-add_ctx"><a href="#val-add_ctx" class="anchor"></a><code><span><span class="keyword">val</span> add_ctx : <span>string <span class="arrow">-></span></span> <span><span><span>(<span class="type-var">'a</span>, string)</span> <a href="#type-t">t</a></span> <span class="arrow">-></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 anchored" id="val-add_ctxf"><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>, <a href="../../ocaml/Stdlib/Format/index.html#type-formatter">Stdlib.Format.formatter</a>, unit, <span><span><span>(<span class="type-var">'b</span>, string)</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span><span>(<span class="type-var">'b</span>, string)</span> <a href="#type-t">t</a></span>)</span> <a href="../../ocaml/Stdlib/index.html#type-format4">format4</a></span> <span class="arrow">-></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 class="language-ocaml"><code>add_ctxf "message(number %d, foo: %B)" 42 true (Error "error)"</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 anchored" id="val-opt_map"><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">-></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">-></span></span> <span><span><span class="type-var">'a</span> option</span> <span class="arrow">-></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 anchored" id="val-map"><a href="#val-map" class="anchor"></a><code><span><span class="keyword">val</span> map : <span><span>(<span><span class="type-var">'a</span> <span class="arrow">-></span></span> <span class="type-var">'b</span>)</span> <span class="arrow">-></span></span> <span><span><span>(<span class="type-var">'a</span>, <span class="type-var">'err</span>)</span> <a href="#type-t">t</a></span> <span class="arrow">-></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 anchored" id="val-map_err"><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">-></span></span> <span class="type-var">'err2</span>)</span> <span class="arrow">-></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">-></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 anchored" id="val-map2"><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">-></span></span> <span class="type-var">'b</span>)</span> <span class="arrow">-></span></span> <span><span>(<span><span class="type-var">'err1</span> <span class="arrow">-></span></span> <span class="type-var">'err2</span>)</span> <span class="arrow">-></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">-></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 anchored" id="val-iter"><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">-></span></span> unit)</span> <span class="arrow">-></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">-></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 anchored" id="val-iter_err"><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">-></span></span> unit)</span> <span class="arrow">-></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">-></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 anchored" id="exception-Get_error"><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 anchored" id="val-get_exn"><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">-></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> <a href="#exception-Get_error"><code>Get_error</code></a> <p>if the value is an error.</p></li></ul></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-get_or"><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">-></span></span> <span><span class="label">default</span>:<span class="type-var">'a</span> <span class="arrow">-></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 anchored" id="val-get_or_failwith"><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">-></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> <code>Failure</code> <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 anchored" id="val-get_lazy"><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">-></span></span> <span class="type-var">'a</span>)</span> <span class="arrow">-></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">-></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 anchored" id="val-map_or"><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">-></span></span> <span class="type-var">'b</span>)</span> <span class="arrow">-></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">-></span></span> <span><span class="label">default</span>:<span class="type-var">'b</span> <span class="arrow">-></span></span> <span class="type-var">'b</span></span></code></div><div class="spec-doc"><p><code>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 anchored" id="val-catch"><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">-></span></span> <span><span class="label">ok</span>:<span>(<span><span class="type-var">'a</span> <span class="arrow">-></span></span> <span class="type-var">'b</span>)</span> <span class="arrow">-></span></span> <span><span class="label">err</span>:<span>(<span><span class="type-var">'err</span> <span class="arrow">-></span></span> <span class="type-var">'b</span>)</span> <span class="arrow">-></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 anchored" id="val-flat_map"><a href="#val-flat_map" class="anchor"></a><code><span><span class="keyword">val</span> flat_map : <span><span>(<span><span class="type-var">'a</span> <span class="arrow">-></span></span> <span><span>(<span class="type-var">'b</span>, <span class="type-var">'err</span>)</span> <a href="#type-t">t</a></span>)</span> <span class="arrow">-></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">-></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 anchored" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span><span class="keyword">val</span> equal : <span><span class="label">err</span>:<span><span class="type-var">'err</span> <a href="#type-equal">equal</a></span> <span class="arrow">-></span></span> <span><span><span class="type-var">'a</span> <a href="#type-equal">equal</a></span> <span class="arrow">-></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 anchored" id="val-compare"><a href="#val-compare" class="anchor"></a><code><span><span class="keyword">val</span> compare : <span><span class="label">err</span>:<span><span class="type-var">'err</span> <a href="#type-ord">ord</a></span> <span class="arrow">-></span></span> <span><span><span class="type-var">'a</span> <a href="#type-ord">ord</a></span> <span class="arrow">-></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 anchored" id="val-fold"><a href="#val-fold" class="anchor"></a><code><span><span class="keyword">val</span> fold : <span><span class="label">ok</span>:<span>(<span><span class="type-var">'a</span> <span class="arrow">-></span></span> <span class="type-var">'b</span>)</span> <span class="arrow">-></span></span> <span><span class="label">error</span>:<span>(<span><span class="type-var">'err</span> <span class="arrow">-></span></span> <span class="type-var">'b</span>)</span> <span class="arrow">-></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">-></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 anchored" id="val-fold_ok"><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">-></span></span> <span><span class="type-var">'b</span> <span class="arrow">-></span></span> <span class="type-var">'a</span>)</span> <span class="arrow">-></span></span> <span><span class="type-var">'a</span> <span class="arrow">-></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">-></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 anchored" id="val-is_ok"><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">-></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 anchored" id="val-is_error"><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">-></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 anchored" id="val-guard"><a href="#val-guard" class="anchor"></a><code><span><span class="keyword">val</span> guard : <span><span>(<span>unit <span class="arrow">-></span></span> <span class="type-var">'a</span>)</span> <span class="arrow">-></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 anchored" id="val-guard_str"><a href="#val-guard_str" class="anchor"></a><code><span><span class="keyword">val</span> guard_str : <span><span>(<span>unit <span class="arrow">-></span></span> <span class="type-var">'a</span>)</span> <span class="arrow">-></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 anchored" id="val-guard_str_trace"><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">-></span></span> <span class="type-var">'a</span>)</span> <span class="arrow">-></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 anchored" id="val-wrap1"><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">-></span></span> <span class="type-var">'b</span>)</span> <span class="arrow">-></span></span> <span><span class="type-var">'a</span> <span class="arrow">-></span></span> <span><span>(<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 anchored" id="val-wrap2"><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">-></span></span> <span><span class="type-var">'b</span> <span class="arrow">-></span></span> <span class="type-var">'c</span>)</span> <span class="arrow">-></span></span> <span><span class="type-var">'a</span> <span class="arrow">-></span></span> <span><span class="type-var">'b</span> <span class="arrow">-></span></span> <span><span>(<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 anchored" id="val-wrap3"><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">-></span></span> <span><span class="type-var">'b</span> <span class="arrow">-></span></span> <span><span class="type-var">'c</span> <span class="arrow">-></span></span> <span class="type-var">'d</span>)</span> <span class="arrow">-></span></span> <span><span class="type-var">'a</span> <span class="arrow">-></span></span> <span><span class="type-var">'b</span> <span class="arrow">-></span></span> <span><span class="type-var">'c</span> <span class="arrow">-></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 anchored" id="val-pure"><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">-></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 anchored" id="val-join"><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">-></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 anchored" id="val-both"><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">-></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">-></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 anchored" id="module-Infix"><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 anchored" id="val-(<$>)"><a href="#val-(<$>)" class="anchor"></a><code><span><span class="keyword">val</span> (<$>) : <span><span>(<span><span class="type-var">'a</span> <span class="arrow">-></span></span> <span class="type-var">'b</span>)</span> <span class="arrow">-></span></span> <span><span><span>(<span class="type-var">'a</span>, <span class="type-var">'err</span>)</span> <a href="#type-t">t</a></span> <span class="arrow">-></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 anchored" id="val-(>|=)"><a href="#val-(>|=)" class="anchor"></a><code><span><span class="keyword">val</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">-></span></span> <span><span>(<span><span class="type-var">'a</span> <span class="arrow">-></span></span> <span class="type-var">'b</span>)</span> <span class="arrow">-></span></span> <span><span>(<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 anchored" id="val-(>>=)"><a href="#val-(>>=)" class="anchor"></a><code><span><span class="keyword">val</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">-></span></span> <span><span>(<span><span class="type-var">'a</span> <span class="arrow">-></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">-></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 >>= 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 anchored" id="val-(<*>)"><a href="#val-(<*>)" class="anchor"></a><code><span><span class="keyword">val</span> (<*>) : <span><span><span>(<span><span class="type-var">'a</span> <span class="arrow">-></span></span> <span class="type-var">'b</span>, <span class="type-var">'err</span>)</span> <a href="#type-t">t</a></span> <span class="arrow">-></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">-></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 <*> 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 anchored" id="val-let+"><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">-></span></span> <span><span>(<span><span class="type-var">'a</span> <span class="arrow">-></span></span> <span class="type-var">'b</span>)</span> <span class="arrow">-></span></span> <span><span>(<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 anchored" id="val-and+"><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">-></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">-></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 anchored" id="val-let*"><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">-></span></span> <span><span>(<span><span class="type-var">'a</span> <span class="arrow">-></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">-></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 anchored" id="val-and*"><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">-></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">-></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 anchored" id="val-flatten_l"><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">-></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 anchored" id="val-map_l"><a href="#val-map_l" class="anchor"></a><code><span><span class="keyword">val</span> map_l : <span><span>(<span><span class="type-var">'a</span> <span class="arrow">-></span></span> <span><span>(<span class="type-var">'b</span>, <span class="type-var">'err</span>)</span> <a href="#type-t">t</a></span>)</span> <span class="arrow">-></span></span> <span><span><span class="type-var">'a</span> list</span> <span class="arrow">-></span></span> <span><span>(<span><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 anchored" id="val-fold_l"><a href="#val-fold_l" class="anchor"></a><code><span><span class="keyword">val</span> fold_l : <span><span>(<span><span class="type-var">'b</span> <span class="arrow">-></span></span> <span><span class="type-var">'a</span> <span class="arrow">-></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">-></span></span> <span><span class="type-var">'b</span> <span class="arrow">-></span></span> <span><span><span class="type-var">'a</span> list</span> <span class="arrow">-></span></span> <span><span>(<span class="type-var">'b</span>, <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 anchored" id="val-fold_iter"><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">-></span></span> <span><span class="type-var">'a</span> <span class="arrow">-></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">-></span></span> <span><span class="type-var">'b</span> <span class="arrow">-></span></span> <span><span><span class="type-var">'a</span> <a href="#type-iter">iter</a></span> <span class="arrow">-></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 anchored" id="val-choose"><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">-></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 anchored" id="val-retry"><a href="#val-retry" class="anchor"></a><code><span><span class="keyword">val</span> retry : <span>int <span class="arrow">-></span></span> <span><span>(<span>unit <span class="arrow">-></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">-></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 anchored" id="module-type-MONAD"><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 anchored" id="module-Traverse"><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 anchored" id="val-to_opt"><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">-></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 anchored" id="val-of_opt"><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">-></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 "of_opt"</code>.</p></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-to_iter"><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">-></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 anchored" id="val-to_seq"><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">-></span></span> <span><span class="type-var">'a</span> <a href="../../ocaml/Stdlib/Seq/index.html#type-t">Stdlib.Seq.t</a></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 anchored" id="type-error"><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><ol><li id="type-error.Ok" class="def constructor anchored"><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></li><li id="type-error.Error" class="def constructor anchored"><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></li></ol><code><span> ]</span></code></div></div><div class="odoc-spec"><div class="spec value anchored" id="val-of_err"><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">-></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 anchored" id="val-to_err"><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">-></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 anchored" id="val-pp"><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">-></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 anchored" id="val-pp'"><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">-></span></span> <span><span><span class="type-var">'e</span> <a href="#type-printer">printer</a></span> <span class="arrow">-></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>
|