mirror of
https://github.com/c-cube/ocaml-containers.git
synced 2025-12-06 03:05:28 -05:00
2 lines
No EOL
23 KiB
HTML
2 lines
No EOL
23 KiB
HTML
<!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="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> » 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>+'a t</code><code><span class="keyword"> = </span><span class="type-var">'a</span> option</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 class="type-var">'a</span> <span>-></span> <span class="type-var">'b</span>) <span>-></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span>-></span> <span class="type-var">'b</span> <a href="index.html#type-t">t</a></code></dt><dd><p>Transform the element inside, 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 : default:<span class="type-var">'b</span> <span>-></span> (<span class="type-var">'a</span> <span>-></span> <span class="type-var">'b</span>) <span>-></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span>-></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 : (unit <span>-></span> <span class="type-var">'b</span>) <span>-></span> (<span class="type-var">'a</span> <span>-></span> <span class="type-var">'b</span>) <span>-></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span>-></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 class="type-var">_</span> <a href="index.html#type-t">t</a> <span>-></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 class="type-var">_</span> <a href="index.html#type-t">t</a> <span>-></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 class="type-var">'a</span> <span>-></span> <span class="type-var">'a</span> <span>-></span> int) <span>-></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span>-></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span>-></span> int</code></dt><dd><p>Compare two options, using custom comparators 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 class="type-var">'a</span> <span>-></span> <span class="type-var">'a</span> <span>-></span> bool) <span>-></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span>-></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dd><p>Test for equality between option types using a custom equality predicat.</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>-></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></dt><dd><p>Monadic return, that is <code>return x = Some x</code>.</p></dd></dl><dl><dt class="spec value" id="val-(>|=)"><a href="#val-(>|=)" class="anchor"></a><code><span class="keyword">val </span>(>|=) : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span>-></span> (<span class="type-var">'a</span> <span>-></span> <span class="type-var">'b</span>) <span>-></span> <span class="type-var">'b</span> <a href="index.html#type-t">t</a></code></dt><dd><p>Infix version of <a href="index.html#val-map"><code>map</code></a>.</p></dd></dl><dl><dt class="spec value" id="val-(>>=)"><a href="#val-(>>=)" class="anchor"></a><code><span class="keyword">val </span>(>>=) : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span>-></span> (<span class="type-var">'a</span> <span>-></span> <span class="type-var">'b</span> <a href="index.html#type-t">t</a>) <span>-></span> <span class="type-var">'b</span> <a href="index.html#type-t">t</a></code></dt><dd><p>Monadic bind.</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 class="type-var">'a</span> <span>-></span> <span class="type-var">'b</span> <a href="index.html#type-t">t</a>) <span>-></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span>-></span> <span class="type-var">'b</span> <a href="index.html#type-t">t</a></code></dt><dd><p>Flip version of <code>>>=</code>.</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 class="type-var">'a</span> <span>-></span> <span class="type-var">'b</span> <span>-></span> <span class="type-var">'c</span>) <span>-></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span>-></span> <span class="type-var">'b</span> <a href="index.html#type-t">t</a> <span>-></span> <span class="type-var">'c</span> <a href="index.html#type-t">t</a></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 class="type-var">'a</span> <span>-></span> unit) <span>-></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span>-></span> unit</code></dt><dd><p>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 class="type-var">'a</span> <span>-></span> <span class="type-var">'b</span> <span>-></span> <span class="type-var">'a</span>) <span>-></span> <span class="type-var">'a</span> <span>-></span> <span class="type-var">'b</span> <a href="index.html#type-t">t</a> <span>-></span> <span class="type-var">'a</span></code></dt><dd><p>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 class="type-var">'a</span> <span>-></span> bool) <span>-></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span>-></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></dt><dd><p>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 class="type-var">'a</span> <span>-></span> bool) <span>-></span> <span class="type-var">'a</span> <span>-></span> <span class="type-var">'a</span> option</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 class="type-var">'a</span> <span>-></span> bool) <span>-></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dd><p>Return <code>true</code> iff there exists an element for which the provided function 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 class="type-var">'a</span> <span>-></span> bool) <span>-></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span>-></span> bool</code></dt><dd><p>Return <code>true</code> iff the provided function 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 : default:<span class="type-var">'a</span> <span>-></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span>-></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 = None</code>.</p><dl><dt>since</dt><dd>0.18</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 class="type-var">'a</span> <a href="index.html#type-t">t</a> <span>-></span> <span class="type-var">'a</span></code></dt><dd><p>Open the option, possibly failing if it 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 : (unit <span>-></span> <span class="type-var">'a</span>) <span>-></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span>-></span> <span class="type-var">'a</span></code></dt><dd><p><code>get_lazy default_fn x</code> unwraps <code>x</code>, but if <code>x = 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 class="type-var">'a</span> <a href="index.html#type-t">t</a> list <span>-></span> <span class="type-var">'a</span> list <a href="index.html#type-t">t</a></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 : ?⁠handler:(exn <span>-></span> bool) <span>-></span> (<span class="type-var">'a</span> <span>-></span> <span class="type-var">'b</span>) <span>-></span> <span class="type-var">'a</span> <span>-></span> <span class="type-var">'b</span> option</code></dt><dd><p><code>wrap 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 : ?⁠handler:(exn <span>-></span> bool) <span>-></span> (<span class="type-var">'a</span> <span>-></span> <span class="type-var">'b</span> <span>-></span> <span class="type-var">'c</span>) <span>-></span> <span class="type-var">'a</span> <span>-></span> <span class="type-var">'b</span> <span>-></span> <span class="type-var">'c</span> option</code></dt><dd><p><code>wrap2 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><h2 id="applicative"><a href="#applicative" class="anchor"></a>Applicative</h2></header><dl><dt class="spec value" id="val-pure"><a href="#val-pure" class="anchor"></a><code><span class="keyword">val </span>pure : <span class="type-var">'a</span> <span>-></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></dt><dd><p>Alias to <a href="index.html#val-return"><code>return</code></a>.</p></dd></dl><dl><dt class="spec value" id="val-(<*>)"><a href="#val-(<*>)" class="anchor"></a><code><span class="keyword">val </span>(<*>) : (<span class="type-var">'a</span> <span>-></span> <span class="type-var">'b</span>) <a href="index.html#type-t">t</a> <span>-></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span>-></span> <span class="type-var">'b</span> <a href="index.html#type-t">t</a></code></dt><dd><p><code>f <*> (Some x)</code> returns <code>Some (f x)</code> and <code>f <*> None</code> returns <code>None</code>.</p></dd></dl><dl><dt class="spec value" id="val-(<$>)"><a href="#val-(<$>)" class="anchor"></a><code><span class="keyword">val </span>(<$>) : (<span class="type-var">'a</span> <span>-></span> <span class="type-var">'b</span>) <span>-></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span>-></span> <span class="type-var">'b</span> <a href="index.html#type-t">t</a></code></dt><dd><p>Like <code>map</code>.</p></dd></dl></section><section><header><h2 id="alternatives"><a href="#alternatives" class="anchor"></a>Alternatives</h2></header><dl><dt class="spec value" id="val-or_"><a href="#val-or_" class="anchor"></a><code><span class="keyword">val </span>or_ : else_:<span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span>-></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span>-></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></dt><dd><p><code>or_ ~else_ a</code> is <code>a</code> if <code>a</code> is <code>Some _</code>, <code>else_</code> otherwise.</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 : else_:(unit <span>-></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a>) <span>-></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span>-></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></dt><dd><p><code>or_lazy ~else_ a</code> is <code>a</code> if <code>a</code> is <code>Some _</code>, <code>else_ ()</code> otherwise.</p><dl><dt>since</dt><dd>1.2</dd></dl></dd></dl><dl><dt class="spec value" id="val-(<+>)"><a href="#val-(<+>)" class="anchor"></a><code><span class="keyword">val </span>(<+>) : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span>-></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span>-></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></dt><dd><p><code>a <+> b</code> is <code>a</code> if <code>a</code> is <code>Some _</code>, <code>b</code> otherwise.</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 class="type-var">'a</span> <a href="index.html#type-t">t</a> list <span>-></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></dt><dd><p><code>choice</code> returns the first non-<code>None</code> element of the list, 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 class="type-var">'a</span> <a href="index.html#type-t">t</a> <a href="index.html#type-t">t</a> <span>-></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></dt><dd><p><code>flatten</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>-></span> <span class="type-var">'a</span> <span>-></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></dt><dd><p>Apply <code>Some</code> or <code>None</code> depending on a boolean. 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><h2 id="infix-operators"><a href="#infix-operators" class="anchor"></a>Infix Operators</h2><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></section><section><header><h2 id="conversion-and-io"><a href="#conversion-and-io" class="anchor"></a>Conversion and IO</h2></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 class="type-var">'a</span> <a href="index.html#type-t">t</a> <span>-></span> <span class="type-var">'a</span> list</code></dt><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 class="type-var">'a</span> list <span>-></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></dt><dd><p>Head of list, or <code>None</code>.</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>-></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span>-></span> (<span class="type-var">'a</span>, <span class="type-var">'e</span>) Result.result</code></dt><dd><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 : (unit <span>-></span> <span class="type-var">'e</span>) <span>-></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span>-></span> (<span class="type-var">'a</span>, <span class="type-var">'e</span>) Result.result</code></dt><dd><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 class="type-var">'a</span>, <span class="type-var">_</span>) Result.result <span>-></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></dt><dd><dl><dt>since</dt><dd>1.2</dd></dl></dd></dl><dl><dt class="spec type" id="type-sequence"><a href="#type-sequence" class="anchor"></a><code><span class="keyword">type </span>'a sequence</code><code><span class="keyword"> = </span>(<span class="type-var">'a</span> <span>-></span> unit) <span>-></span> unit</code></dt><dt class="spec type" id="type-gen"><a href="#type-gen" class="anchor"></a><code><span class="keyword">type </span>'a gen</code><code><span class="keyword"> = </span>unit <span>-></span> <span class="type-var">'a</span> option</code></dt><dt class="spec type" id="type-printer"><a href="#type-printer" class="anchor"></a><code><span class="keyword">type </span>'a printer</code><code><span class="keyword"> = </span>Format.formatter <span>-></span> <span class="type-var">'a</span> <span>-></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>'a random_gen</code><code><span class="keyword"> = </span>Random.State.t <span>-></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 class="type-var">'a</span> <a href="index.html#type-random_gen">random_gen</a> <span>-></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <a href="index.html#type-random_gen">random_gen</a></code></dt><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 class="type-var">'a</span> <a href="index.html#type-t">t</a> <a href="index.html#type-sequence">sequence</a> <span>-></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></dt><dd><p><code>choice_seq s</code> is similar to <a href="index.html#val-choice"><code>choice</code></a>, but works on sequences. It returns the first <code>Some x</code> occurring in <code>s</code>, or <code>None</code> otherwise.</p><dl><dt>since</dt><dd>0.13</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 class="type-var">'a</span> <a href="index.html#type-t">t</a> <span>-></span> <span class="type-var">'a</span> <a href="index.html#type-gen">gen</a></code></dt><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 class="type-var">'a</span> <a href="index.html#type-t">t</a> <span>-></span> <span class="type-var">'a</span> <a href="index.html#type-sequence">sequence</a></code></dt><dt class="spec value" id="val-pp"><a href="#val-pp" class="anchor"></a><code><span class="keyword">val </span>pp : <span class="type-var">'a</span> <a href="index.html#type-printer">printer</a> <span>-></span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <a href="index.html#type-printer">printer</a></code></dt></dl></section></div></body></html> |