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

2 lines
No EOL
33 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>CCOpt (containers.CCOpt)</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; CCOpt</nav><h1>Module <code>CCOpt</code></h1><h2 id="options"><a href="#options" class="anchor"></a>Options</h2><nav class="toc"><ul><li><a href="#applicative">Applicative</a></li><li><a href="#alternatives">Alternatives</a></li><li><a href="#infix-operators">Infix Operators</a></li><li><a href="#conversion-and-io">Conversion and IO</a></li></ul></nav></header><dl><dt class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><code><span class="keyword">type</span> <span>+'a t</span></code><code> = <span><span class="type-var">'a</span> option</span></code></dt></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 class="type-var">'a</span> <a href="index.html#type-t">t</a></span> <span>&#45;&gt;</span> <span><span class="type-var">'b</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p><code>map f o</code> applies the function <code>f</code> to the element inside <code>o</code>, if any.</p></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>default:<span class="type-var">'b</span></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 class="type-var">'a</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>map_or ~default f o</code> is <code>f x</code> if <code>o = Some x</code>, <code>default</code> otherwise.</p><dl><dt>since</dt><dd>0.16</dd></dl></dd></dl><dl><dt class="spec value" id="val-map_lazy"><a href="#val-map_lazy" class="anchor"></a><code><span class="keyword">val</span> map_lazy : <span>(unit <span>&#45;&gt;</span> <span class="type-var">'b</span>)</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 class="type-var">'a</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>map_lazy default_fn f o</code> if <code>f o</code> if <code>o = Some x</code>, <code>default_fn ()</code> otherwise.</p><dl><dt>since</dt><dd>1.2</dd></dl></dd></dl><dl><dt class="spec value" id="val-is_some"><a href="#val-is_some" class="anchor"></a><code><span class="keyword">val</span> is_some : <span><span class="type-var">_</span> <a href="index.html#type-t">t</a></span> <span>&#45;&gt;</span> bool</code></dt><dd><p><code>is_some (Some x)</code> returns <code>true</code> otherwise it returns <code>false</code>.</p></dd></dl><dl><dt class="spec value" id="val-is_none"><a href="#val-is_none" class="anchor"></a><code><span class="keyword">val</span> is_none : <span><span class="type-var">_</span> <a href="index.html#type-t">t</a></span> <span>&#45;&gt;</span> bool</code></dt><dd><p><code>is_none None</code> returns <code>true</code> otherwise it returns <code>false</code>.</p><dl><dt>since</dt><dd>0.11</dd></dl></dd></dl><dl><dt class="spec value" id="val-compare"><a href="#val-compare" class="anchor"></a><code><span class="keyword">val</span> compare : <span>(<span class="type-var">'a</span> <span>&#45;&gt;</span> <span class="type-var">'a</span> <span>&#45;&gt;</span> int)</span> <span>&#45;&gt;</span> <span><span class="type-var">'a</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-t">t</a></span> <span>&#45;&gt;</span> int</code></dt><dd><p><code>compare comp o1 o2</code> compares two options <code>o1</code> and <code>o2</code>, using custom comparators <code>comp</code> for the value. <code>None</code> is always assumed to be less than <code>Some _</code>.</p></dd></dl><dl><dt class="spec value" id="val-equal"><a href="#val-equal" class="anchor"></a><code><span class="keyword">val</span> equal : <span>(<span class="type-var">'a</span> <span>&#45;&gt;</span> <span class="type-var">'a</span> <span>&#45;&gt;</span> bool)</span> <span>&#45;&gt;</span> <span><span class="type-var">'a</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-t">t</a></span> <span>&#45;&gt;</span> bool</code></dt><dd><p><code>equal p o1 o2</code> tests for equality between option types <code>o1</code> and <code>o2</code>, using a custom equality predicate <code>p</code>.</p></dd></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 class="type-var">'a</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p><code>return x</code> is a monadic return, that is <code>return x = Some x</code>.</p></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 class="type-var">'a</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 class="type-var">'b</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p><code>o &gt;|= f</code> is the infix version of <a href="index.html#val-map"><code>map</code></a>.</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 class="type-var">'b</span> <a href="index.html#type-t">t</a></span>)</span> <span>&#45;&gt;</span> <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span> <span>&#45;&gt;</span> <span><span class="type-var">'b</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p><code>flat_map f o</code> is equivalent to <a href="index.html#val-map"><code>map</code></a> followed by <a href="index.html#val-flatten"><code>flatten</code></a>. Flip version of <code>&gt;&gt;=</code>.</p></dd></dl><dl><dt class="spec value" id="val-bind"><a href="#val-bind" class="anchor"></a><code><span class="keyword">val</span> bind : <span><span class="type-var">'a</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 class="type-var">'b</span> <a href="index.html#type-t">t</a></span>)</span> <span>&#45;&gt;</span> <span><span class="type-var">'b</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p><code>bind o f</code> is <code>f v</code> if <code>o</code> is <code>Some v</code>, <code>None</code> otherwise. Monadic bind.</p><dl><dt>since</dt><dd>3.0</dd></dl></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 class="type-var">'a</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 class="type-var">'b</span> <a href="index.html#type-t">t</a></span>)</span> <span>&#45;&gt;</span> <span><span class="type-var">'b</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p><code>o &gt;&gt;= f</code> is the infix version of <a href="index.html#val-bind"><code>bind</code></a>.</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>&#45;&gt;</span> <span class="type-var">'c</span>)</span> <span>&#45;&gt;</span> <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span> <span>&#45;&gt;</span> <span><span class="type-var">'b</span> <a href="index.html#type-t">t</a></span> <span>&#45;&gt;</span> <span><span class="type-var">'c</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p><code>map2 f o1 o2</code> maps <code>'a option</code> and <code>'b option</code> to a <code>'c option</code> using <code>f</code>.</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 class="type-var">'a</span> <a href="index.html#type-t">t</a></span> <span>&#45;&gt;</span> unit</code></dt><dd><p><code>iter f o</code> applies <code>f</code> to <code>o</code>. Iterate on 0 or 1 element.</p></dd></dl><dl><dt class="spec value" id="val-fold"><a href="#val-fold" class="anchor"></a><code><span class="keyword">val</span> fold : <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 class="type-var">'b</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 f init o</code> is <code>f init x</code> if <code>o</code> is <code>Some x</code>, or <code>init</code> if <code>o</code> is <code>None</code>. Fold on 0 or 1 element.</p></dd></dl><dl><dt class="spec value" id="val-filter"><a href="#val-filter" class="anchor"></a><code><span class="keyword">val</span> filter : <span>(<span class="type-var">'a</span> <span>&#45;&gt;</span> bool)</span> <span>&#45;&gt;</span> <span><span class="type-var">'a</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-t">t</a></span></code></dt><dd><p><code>filter f o</code> returns <code>Some x</code> if <code>f (Some x)</code> is <code>true</code>, or <code>None</code> if <code>f (Some x)</code> is <code>false</code> or if <code>o</code> is <code>None</code>. Filter on 0 or 1 element.</p><dl><dt>since</dt><dd>0.5</dd></dl></dd></dl><dl><dt class="spec value" id="val-if_"><a href="#val-if_" class="anchor"></a><code><span class="keyword">val</span> if_ : <span>(<span class="type-var">'a</span> <span>&#45;&gt;</span> bool)</span> <span>&#45;&gt;</span> <span class="type-var">'a</span> <span>&#45;&gt;</span> <span><span class="type-var">'a</span> option</span></code></dt><dd><p><code>if_ f x</code> is <code>Some x</code> if <code>f x</code>, <code>None</code> otherwise.</p><dl><dt>since</dt><dd>0.17</dd></dl></dd></dl><dl><dt class="spec value" id="val-exists"><a href="#val-exists" class="anchor"></a><code><span class="keyword">val</span> exists : <span>(<span class="type-var">'a</span> <span>&#45;&gt;</span> bool)</span> <span>&#45;&gt;</span> <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span> <span>&#45;&gt;</span> bool</code></dt><dd><p><code>exists f o</code> returns <code>true</code> iff there exists an element for which the provided function <code>f</code> evaluates to <code>true</code>.</p><dl><dt>since</dt><dd>0.17</dd></dl></dd></dl><dl><dt class="spec value" id="val-for_all"><a href="#val-for_all" class="anchor"></a><code><span class="keyword">val</span> for_all : <span>(<span class="type-var">'a</span> <span>&#45;&gt;</span> bool)</span> <span>&#45;&gt;</span> <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span> <span>&#45;&gt;</span> bool</code></dt><dd><p><code>for_all f o</code> returns <code>true</code> iff the provided function <code>f</code> evaluates to <code>true</code> for all elements.</p><dl><dt>since</dt><dd>0.17</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>default:<span class="type-var">'a</span></span> <span>&#45;&gt;</span> <span><span class="type-var">'a</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 ~default o</code> extracts the value from <code>o</code>, or returns <code>default</code> if <code>o</code> is <code>None</code>.</p><dl><dt>since</dt><dd>0.18</dd></dl></dd></dl><dl><dt class="spec value" id="val-value"><a href="#val-value" class="anchor"></a><code><span class="keyword">val</span> value : <span><span class="type-var">'a</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>value o ~default</code> is similar to the Stdlib's <code>Option.value</code> and to <a href="index.html#val-get_or"><code>get_or</code></a>.</p><dl><dt>since</dt><dd>2.8</dd></dl></dd></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 class="type-var">'a</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_exn o</code> returns <code>x</code> if <code>o</code> is <code>Some x</code> or fails if <code>o</code> is <code>None</code>.</p><dl><dt>raises Invalid_argument</dt><dd><p>if the option is <code>None</code>.</p></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>(unit <span>&#45;&gt;</span> <span class="type-var">'a</span>)</span> <span>&#45;&gt;</span> <span><span class="type-var">'a</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 o</code> unwraps <code>o</code>, but if <code>o</code> is <code>None</code> it returns <code>default_fn ()</code> instead.</p><dl><dt>since</dt><dd>0.6.1</dd></dl></dd></dl><dl><dt class="spec value" id="val-sequence_l"><a href="#val-sequence_l" class="anchor"></a><code><span class="keyword">val</span> sequence_l : <span><span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span> list</span> <span>&#45;&gt;</span> <span><span><span class="type-var">'a</span> list</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p><code>sequence_l [x1; x2; …; xn]</code> returns <code>Some [y1; y2; …; yn]</code> if every <code>xi</code> is <code>Some yi</code>. Otherwise, if the list contains at least one <code>None</code>, the result is <code>None</code>.</p></dd></dl><dl><dt class="spec value" id="val-wrap"><a href="#val-wrap" class="anchor"></a><code><span class="keyword">val</span> wrap : <span>?&#8288;handler:<span>(exn <span>&#45;&gt;</span> bool)</span></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 class="type-var">'a</span> <span>&#45;&gt;</span> <span><span class="type-var">'b</span> option</span></code></dt><dd><p><code>wrap ?handler f x</code> calls <code>f x</code> and returns <code>Some y</code> if <code>f x = y</code>. If <code>f x</code> raises any exception, the result is <code>None</code>. This can be useful to wrap functions such as <code>Map.S.find</code>.</p><dl><dt>parameter handler</dt><dd><p>the exception handler, which returns <code>true</code> if the exception is to be caught.</p></dd></dl></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>?&#8288;handler:<span>(exn <span>&#45;&gt;</span> bool)</span></span> <span>&#45;&gt;</span> <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 class="type-var">'c</span> option</span></code></dt><dd><p><code>wrap2 ?handler f x y</code> is similar to <a href="index.html#val-wrap"><code>wrap</code></a> but for binary functions.</p></dd></dl><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 class="type-var">'a</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p><code>pure x</code> is an alias to <a href="index.html#val-return"><code>return</code></a>.</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> <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-t">t</a></span> <span>&#45;&gt;</span> <span><span class="type-var">'b</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p><code>f &lt;*&gt; (Some x)</code> returns <code>Some (f x)</code> and <code>f &lt;*&gt; None</code> returns <code>None</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 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">'a</span> <a href="index.html#type-t">t</a></span> <span>&#45;&gt;</span> <span><span class="type-var">'b</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p><code>f &lt;$&gt; o</code> is like <code>map f o</code>.</p></dd></dl></section><section><header><h3 id="alternatives"><a href="#alternatives" class="anchor"></a>Alternatives</h3></header><dl><dt class="spec value" id="val-or_"><a href="#val-or_" class="anchor"></a><code><span class="keyword">val</span> or_ : <span>else_:<span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span></span> <span>&#45;&gt;</span> <span><span class="type-var">'a</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-t">t</a></span></code></dt><dd><p><code>or_ ~else_ o</code> is <code>o</code> if <code>o</code> is <code>Some _</code>, <code>else_</code> if <code>o</code> is <code>None</code>.</p><dl><dt>since</dt><dd>1.2</dd></dl></dd></dl><dl><dt class="spec value" id="val-or_lazy"><a href="#val-or_lazy" class="anchor"></a><code><span class="keyword">val</span> or_lazy : <span>else_:<span>(unit <span>&#45;&gt;</span> <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span>)</span></span> <span>&#45;&gt;</span> <span><span class="type-var">'a</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-t">t</a></span></code></dt><dd><p><code>or_lazy ~else_ o</code> is <code>o</code> if <code>o</code> is <code>Some _</code>, <code>else_ ()</code> if <code>o</code> is <code>None</code>.</p><dl><dt>since</dt><dd>1.2</dd></dl></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 class="type-var">'a</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-t">t</a></span> <span>&#45;&gt;</span> <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p><code>o1 &lt;+&gt; o2</code> is <code>o1</code> if <code>o1</code> is <code>Some _</code>, <code>o2</code> if <code>o1</code> is <code>None</code>.</p></dd></dl><dl><dt class="spec value" id="val-choice"><a href="#val-choice" class="anchor"></a><code><span class="keyword">val</span> choice : <span><span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span> list</span> <span>&#45;&gt;</span> <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p><code>choice lo</code> returns the first non-<code>None</code> element of the list <code>lo</code>, or <code>None</code>.</p></dd></dl><dl><dt class="spec value" id="val-flatten"><a href="#val-flatten" class="anchor"></a><code><span class="keyword">val</span> flatten : <span><span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></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-t">t</a></span></code></dt><dd><p><code>flatten oo</code> transforms <code>Some x</code> into <code>x</code>.</p><dl><dt>since</dt><dd>2.2</dd></dl></dd></dl><dl><dt class="spec value" id="val-return_if"><a href="#val-return_if" class="anchor"></a><code><span class="keyword">val</span> return_if : bool <span>&#45;&gt;</span> <span class="type-var">'a</span> <span>&#45;&gt;</span> <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p><code>return_if b x</code> applies <code>Some</code> or <code>None</code> depending on the boolean <code>b</code>. More precisely, <code>return_if false x</code> is <code>None</code>, and <code>return_if true x</code> is <code>Some x</code>.</p><dl><dt>since</dt><dd>2.2</dd></dl></dd></dl></section><section><header><h3 id="infix-operators"><a href="#infix-operators" class="anchor"></a>Infix Operators</h3><dl><dt>since</dt><dd>0.16</dd></dl></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"><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-S">CCShimsMkLet_.S</a> <span class="keyword">with</span> <span class="keyword">type</span> <span>'a <a href="../CCShimsMkLet_/module-type-S/index.html#type-t_let">t_let</a></span> := <span><span class="type-var">'a</span> option</span></code></span></summary><dl><dt class="spec type" id="type-t_let"><a href="#type-t_let" class="anchor"></a><code><span class="keyword">type</span> <span>'a t_let</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 class="type-var">'a</span> <a href="index.html#type-t_let">t_let</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 class="type-var">'b</span> <a href="index.html#type-t_let">t_let</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 class="type-var">'a</span> <a href="index.html#type-t_let">t_let</a></span> <span>&#45;&gt;</span> <span><span class="type-var">'b</span> <a href="index.html#type-t_let">t_let</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_let">t_let</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 class="type-var">'a</span> <a href="index.html#type-t_let">t_let</a></span> <span>&#45;&gt;</span> <span>(<span class="type-var">'a</span> <span>&#45;&gt;</span> <span><span class="type-var">'b</span> <a href="index.html#type-t_let">t_let</a></span>)</span> <span>&#45;&gt;</span> <span><span class="type-var">'b</span> <a href="index.html#type-t_let">t_let</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 class="type-var">'a</span> <a href="index.html#type-t_let">t_let</a></span> <span>&#45;&gt;</span> <span><span class="type-var">'b</span> <a href="index.html#type-t_let">t_let</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_let">t_let</a></span></code></dt></dl></details></div></div></div></section><section><header><h3 id="conversion-and-io"><a href="#conversion-and-io" class="anchor"></a>Conversion and IO</h3></header><dl><dt class="spec value" id="val-to_list"><a href="#val-to_list" class="anchor"></a><code><span class="keyword">val</span> to_list : <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span> <span>&#45;&gt;</span> <span><span class="type-var">'a</span> list</span></code></dt><dd><p><code>to_list o</code> returns <code>[x]</code> if <code>o</code> is <code>Some x</code> or the empty list <code>[]</code> if <code>o</code> is <code>None</code>.</p></dd></dl><dl><dt class="spec value" id="val-of_list"><a href="#val-of_list" class="anchor"></a><code><span class="keyword">val</span> of_list : <span><span class="type-var">'a</span> list</span> <span>&#45;&gt;</span> <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p><code>of_list l</code> returns <code>Some x</code> (x being the head of the list l), or <code>None</code> if <code>l</code> is the empty list.</p></dd></dl><dl><dt class="spec value" id="val-to_result"><a href="#val-to_result" class="anchor"></a><code><span class="keyword">val</span> to_result : <span class="type-var">'e</span> <span>&#45;&gt;</span> <span><span class="type-var">'a</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">'e</span>)</span> Stdlib.result</span></code></dt><dd><p><code>to_result e o</code> returns <code>Ok x</code> if <code>o</code> is <code>Some x</code>, or <code>Error e</code> if <code>o</code> is <code>None</code>.</p><dl><dt>since</dt><dd>1.2</dd></dl></dd></dl><dl><dt class="spec value" id="val-to_result_lazy"><a href="#val-to_result_lazy" class="anchor"></a><code><span class="keyword">val</span> to_result_lazy : <span>(unit <span>&#45;&gt;</span> <span class="type-var">'e</span>)</span> <span>&#45;&gt;</span> <span><span class="type-var">'a</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">'e</span>)</span> Stdlib.result</span></code></dt><dd><p><code>to_result_lazy f o</code> returns <code>Ok x</code> if <code>o</code> is <code>Some x</code> or <code>Error f</code> if <code>o</code> is <code>None</code>.</p><dl><dt>since</dt><dd>1.2</dd></dl></dd></dl><dl><dt class="spec value" id="val-of_result"><a href="#val-of_result" class="anchor"></a><code><span class="keyword">val</span> of_result : <span><span>(<span class="type-var">'a</span>, <span class="type-var">_</span>)</span> Stdlib.result</span> <span>&#45;&gt;</span> <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p><code>of_result result</code> returns an option from a <code>result</code>.</p><dl><dt>since</dt><dd>1.2</dd></dl></dd></dl><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><dt class="spec type" id="type-gen"><a href="#type-gen" class="anchor"></a><code><span class="keyword">type</span> <span>'a gen</span></code><code> = unit <span>&#45;&gt;</span> <span><span class="type-var">'a</span> option</span></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><dt class="spec type" id="type-random_gen"><a href="#type-random_gen" class="anchor"></a><code><span class="keyword">type</span> <span>'a random_gen</span></code><code> = Stdlib.Random.State.t <span>&#45;&gt;</span> <span class="type-var">'a</span></code></dt></dl><dl><dt class="spec value" id="val-random"><a href="#val-random" class="anchor"></a><code><span class="keyword">val</span> random : <span><span class="type-var">'a</span> <a href="index.html#type-random_gen">random_gen</a></span> <span>&#45;&gt;</span> <span><span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span> <a href="index.html#type-random_gen">random_gen</a></span></code></dt><dt class="spec value" id="val-choice_iter"><a href="#val-choice_iter" class="anchor"></a><code><span class="keyword">val</span> choice_iter : <span><span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span> <a href="index.html#type-iter">iter</a></span> <span>&#45;&gt;</span> <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p><code>choice_iter iter</code> is similar to <a href="index.html#val-choice"><code>choice</code></a>, but works on <code>iter</code>. It returns the first <code>Some x</code> occurring in <code>iter</code>, or <code>None</code> otherwise.</p><dl><dt>since</dt><dd>3.0</dd></dl></dd></dl><dl><dt class="spec value" id="val-choice_seq"><a href="#val-choice_seq" class="anchor"></a><code><span class="keyword">val</span> choice_seq : <span><span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span> Stdlib.Seq.t</span> <span>&#45;&gt;</span> <span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></span></code></dt><dd><p><code>choice_seq seq</code> works on <code>Seq.t</code>. It returns the first <code>Some x</code> occurring in <code>seq</code>, or <code>None</code> otherwise.</p><dl><dt>since</dt><dd>3.0</dd></dl></dd></dl><dl><dt class="spec value" id="val-to_gen"><a href="#val-to_gen" class="anchor"></a><code><span class="keyword">val</span> to_gen : <span><span class="type-var">'a</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-gen">gen</a></span></code></dt><dd><p><code>to_gen o</code> is <code>o</code> as a <code>gen</code>. <code>Some x</code> is the singleton <code>gen</code> containing <code>x</code> and <code>None</code> is the empty <code>gen</code>.</p></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 class="type-var">'a</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><code>to_seq o</code> is <code>o</code> as a sequence <code>Seq.t</code>. <code>Some x</code> is the singleton sequence containing <code>x</code> and <code>None</code> is the empty sequence. Same as <span class="xref-unresolved" title="unresolved reference to &quot;Stdlib.Option.to_seq&quot;"><span class="xref-unresolved" title="unresolved reference to &quot;Stdlib.Option&quot;"><code>Stdlib</code>.Option</span>.to_seq</span> 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 value" id="val-to_iter"><a href="#val-to_iter" class="anchor"></a><code><span class="keyword">val</span> to_iter : <span><span class="type-var">'a</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><p><code>to_iter o</code> returns an internal iterator, like in the library <code>Iter</code>.</p><dl><dt>since</dt><dd>2.8</dd></dl></dd></dl><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 class="type-var">'a</span> <a href="index.html#type-t">t</a></span> <a href="index.html#type-printer">printer</a></span></code></dt><dd><p><code>pp ppf o</code> pretty-prints option <code>o</code> using <code>ppf</code>.</p></dd></dl></section></div></body></html>