ocaml-containers/2.6/containers/CCFun/index.html
2019-06-18 23:01:25 -05:00

4 lines
No EOL
11 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

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

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>CCFun (containers.CCFun)</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> &#x00BB; CCFun</nav><h1>Module <code>CCFun</code></h1><h2 id="basic-functions"><a href="#basic-functions" class="anchor"></a>Basic Functions</h2><nav class="toc"><ul><li><a href="#monad">Monad</a></li></ul></nav></header><dl><dt class="spec value" id="val-(|&gt;)"><a href="#val-(|&gt;)" class="anchor"></a><code><span class="keyword">val</span> (|&gt;) : <span class="type-var">'a</span> <span>&#45;&gt;</span> (<span class="type-var">'a</span> <span>&#45;&gt;</span> <span class="type-var">'b</span>) <span>&#45;&gt;</span> <span class="type-var">'b</span></code></dt><dd><p>A 'pipe' operator. <code>x |&gt; f</code> is the same as <code>f x</code>.</p></dd></dl><dl><dt class="spec value" id="val-compose"><a href="#val-compose" class="anchor"></a><code><span class="keyword">val</span> compose : (<span class="type-var">'a</span> <span>&#45;&gt;</span> <span class="type-var">'b</span>) <span>&#45;&gt;</span> (<span class="type-var">'b</span> <span>&#45;&gt;</span> <span class="type-var">'c</span>) <span>&#45;&gt;</span> <span class="type-var">'a</span> <span>&#45;&gt;</span> <span class="type-var">'c</span></code></dt><dd><p>Composition. <code>compose f g x</code> is <code>g (f x)</code>.</p></dd></dl><dl><dt class="spec value" id="val-compose_binop"><a href="#val-compose_binop" class="anchor"></a><code><span class="keyword">val</span> compose_binop : (<span class="type-var">'a</span> <span>&#45;&gt;</span> <span class="type-var">'b</span>) <span>&#45;&gt;</span> (<span class="type-var">'b</span> <span>&#45;&gt;</span> <span class="type-var">'b</span> <span>&#45;&gt;</span> <span class="type-var">'c</span>) <span>&#45;&gt;</span> <span class="type-var">'a</span> <span>&#45;&gt;</span> <span class="type-var">'a</span> <span>&#45;&gt;</span> <span class="type-var">'c</span></code></dt><dd><p><code>compose_binop f g</code> is <code>fun x y -&gt; g (f x) (f y)</code>. Example (partial order): <code>List.sort (compose_binop fst CCInt.compare) [1, true; 2, false; 1, false]</code>.</p><dl><dt>since</dt><dd>0.6</dd></dl></dd></dl><dl><dt class="spec value" id="val-(%&gt;)"><a href="#val-(%&gt;)" class="anchor"></a><code><span class="keyword">val</span> (%&gt;) : (<span class="type-var">'a</span> <span>&#45;&gt;</span> <span class="type-var">'b</span>) <span>&#45;&gt;</span> (<span class="type-var">'b</span> <span>&#45;&gt;</span> <span class="type-var">'c</span>) <span>&#45;&gt;</span> <span class="type-var">'a</span> <span>&#45;&gt;</span> <span class="type-var">'c</span></code></dt><dd><p>Alias to <code>compose</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>&#45;&gt;</span> <span class="type-var">'b</span>) <span>&#45;&gt;</span> <span class="type-var">'a</span> <span>&#45;&gt;</span> <span class="type-var">'b</span></code></dt><dd><p><code>f @@ x</code> is the same as <code>f x</code>, but right-associative.</p><dl><dt>since</dt><dd>0.5</dd></dl></dd></dl><dl><dt class="spec value" id="val-id"><a href="#val-id" class="anchor"></a><code><span class="keyword">val</span> id : <span class="type-var">'a</span> <span>&#45;&gt;</span> <span class="type-var">'a</span></code></dt><dd><p>Identity function.</p></dd></dl><dl><dt class="spec value" id="val-const"><a href="#val-const" class="anchor"></a><code><span class="keyword">val</span> const : <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></code></dt><dd><p>Produce a function that just returns its first argument. <code>const x y = x</code> for any <code>y</code>.</p></dd></dl><dl><dt class="spec value" id="val-flip"><a href="#val-flip" class="anchor"></a><code><span class="keyword">val</span> flip : (<span class="type-var">'a</span> <span>&#45;&gt;</span> <span class="type-var">'b</span> <span>&#45;&gt;</span> <span class="type-var">'c</span>) <span>&#45;&gt;</span> <span class="type-var">'b</span> <span>&#45;&gt;</span> <span class="type-var">'a</span> <span>&#45;&gt;</span> <span class="type-var">'c</span></code></dt><dd><p>Reverse the order of arguments for a binary function.</p></dd></dl><dl><dt class="spec value" id="val-curry"><a href="#val-curry" class="anchor"></a><code><span class="keyword">val</span> curry : ((<span class="type-var">'a</span> * <span class="type-var">'b</span>) <span>&#45;&gt;</span> <span class="type-var">'c</span>) <span>&#45;&gt;</span> <span class="type-var">'a</span> <span>&#45;&gt;</span> <span class="type-var">'b</span> <span>&#45;&gt;</span> <span class="type-var">'c</span></code></dt><dd><p>Convert a function which accepts a pair of arguments into a function which accepts two arguments. <code>curry f x y</code> is <code>f (x,y)</code>.</p></dd></dl><dl><dt class="spec value" id="val-uncurry"><a href="#val-uncurry" class="anchor"></a><code><span class="keyword">val</span> uncurry : (<span class="type-var">'a</span> <span>&#45;&gt;</span> <span class="type-var">'b</span> <span>&#45;&gt;</span> <span class="type-var">'c</span>) <span>&#45;&gt;</span> (<span class="type-var">'a</span> * <span class="type-var">'b</span>) <span>&#45;&gt;</span> <span class="type-var">'c</span></code></dt><dd><p>Convert a function which accepts a two arguments into a function which accepts a pair of arguments. <code>uncurry f (x,y)</code> is <code>f x y</code>.</p></dd></dl><dl><dt class="spec value" id="val-tap"><a href="#val-tap" class="anchor"></a><code><span class="keyword">val</span> tap : (<span class="type-var">'a</span> <span>&#45;&gt;</span> <span class="type-var">_</span>) <span>&#45;&gt;</span> <span class="type-var">'a</span> <span>&#45;&gt;</span> <span class="type-var">'a</span></code></dt><dd><p><code>tap f x</code> evaluates <code>f x</code>, discards it, then returns <code>x</code>. Useful in a pipeline, for instance:</p><pre><code class="ml">CCArray.(1 -- 10)
|&gt; tap CCArray.shuffle
|&gt; tap @@ CCArray.sort Pervasives.compare</code></pre></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">'b</span> <span>&#45;&gt;</span> <span class="type-var">'c</span>) <span>&#45;&gt;</span> (<span class="type-var">'a</span> <span>&#45;&gt;</span> <span class="type-var">'b</span>) <span>&#45;&gt;</span> <span class="type-var">'a</span> <span>&#45;&gt;</span> <span class="type-var">'c</span></code></dt><dd><p>Mathematical composition. <code>(%) f g x</code> is <code>f (g x)</code>.</p></dd></dl><dl><dt class="spec value" id="val-lexicographic"><a href="#val-lexicographic" class="anchor"></a><code><span class="keyword">val</span> lexicographic : (<span class="type-var">'a</span> <span>&#45;&gt;</span> <span class="type-var">'a</span> <span>&#45;&gt;</span> int) <span>&#45;&gt;</span> (<span class="type-var">'a</span> <span>&#45;&gt;</span> <span class="type-var">'a</span> <span>&#45;&gt;</span> int) <span>&#45;&gt;</span> <span class="type-var">'a</span> <span>&#45;&gt;</span> <span class="type-var">'a</span> <span>&#45;&gt;</span> int</code></dt><dd><p>Lexicographic combination of comparison functions.</p></dd></dl><dl><dt class="spec value" id="val-finally"><a href="#val-finally" class="anchor"></a><code><span class="keyword">val</span> finally : h:(unit <span>&#45;&gt;</span> <span class="type-var">_</span>) <span>&#45;&gt;</span> f:(unit <span>&#45;&gt;</span> <span class="type-var">'a</span>) <span>&#45;&gt;</span> <span class="type-var">'a</span></code></dt><dd><p><code>finally h f</code> calls <code>f ()</code> and returns its result. If it raises, the same exception is raised; in <b>any</b> case, <code>h ()</code> is called after <code>f ()</code> terminates.</p></dd></dl><dl><dt class="spec value" id="val-finally1"><a href="#val-finally1" class="anchor"></a><code><span class="keyword">val</span> finally1 : h:(unit <span>&#45;&gt;</span> <span class="type-var">_</span>) <span>&#45;&gt;</span> (<span class="type-var">'a</span> <span>&#45;&gt;</span> <span class="type-var">'b</span>) <span>&#45;&gt;</span> <span class="type-var">'a</span> <span>&#45;&gt;</span> <span class="type-var">'b</span></code></dt><dd><p><code>finally1 ~h f x</code> is the same as <code>f x</code>, but after the computation, <code>h ()</code> is called whether <code>f x</code> rose an exception or not.</p><dl><dt>since</dt><dd>0.16</dd></dl></dd></dl><dl><dt class="spec value" id="val-finally2"><a href="#val-finally2" class="anchor"></a><code><span class="keyword">val</span> finally2 : h:(unit <span>&#45;&gt;</span> <span class="type-var">_</span>) <span>&#45;&gt;</span> (<span class="type-var">'a</span> <span>&#45;&gt;</span> <span class="type-var">'b</span> <span>&#45;&gt;</span> <span class="type-var">'c</span>) <span>&#45;&gt;</span> <span 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></code></dt><dd><p><code>finally2 ~h f x y</code> is the same as <code>f x y</code>, but after the computation, <code>h ()</code> is called whether <code>f x y</code> rose an exception or not.</p><dl><dt>since</dt><dd>0.16</dd></dl></dd></dl><dl><dt class="spec value" id="val-opaque_identity"><a href="#val-opaque_identity" class="anchor"></a><code><span class="keyword">val</span> opaque_identity : <span class="type-var">'a</span> <span>&#45;&gt;</span> <span class="type-var">'a</span></code></dt><dd><p><code>opaque_identity x</code> is like <code>x</code>, but prevents Flambda from using <code>x</code>'s definition for optimizing it. (flambda is an optimization/inlining pass in OCaml &gt;= 4.03).</p><dl><dt>since</dt><dd>0.18</dd></dl></dd></dl><dl><dt class="spec value" id="val-iterate"><a href="#val-iterate" class="anchor"></a><code><span class="keyword">val</span> iterate : int <span>&#45;&gt;</span> (<span class="type-var">'a</span> <span>&#45;&gt;</span> <span class="type-var">'a</span>) <span>&#45;&gt;</span> <span class="type-var">'a</span> <span>&#45;&gt;</span> <span class="type-var">'a</span></code></dt><dd><p><code>iterate n f</code> is <code>f</code> iterated <code>n</code> times. That is to say, <code>iterate 0 f x</code> is <code>x</code>, <code>iterate 1 f x</code> is <code>f x</code>, <code>iterate 2 f x</code> is <code>f (f x)</code>, etc.</p><dl><dt>since</dt><dd>2.1</dd></dl></dd></dl><section><header><h3 id="monad"><a href="#monad" class="anchor"></a>Monad</h3><p>Functions with a fixed domain are monads in their codomain.</p></header><div class="spec module" id="module-Monad"><a href="#module-Monad" class="anchor"></a><code><span class="keyword">module</span> <a href="Monad/index.html">Monad</a> : <span class="keyword">functor</span> (<a href="Monad/argument-1-X/index.html">X</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span>) <span>&#45;&gt;</span> <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div></section></div></body></html>