mirror of
https://github.com/c-cube/ocaml-containers.git
synced 2025-12-06 03:05:28 -05:00
6 lines
No EOL
10 KiB
HTML
6 lines
No EOL
10 KiB
HTML
<!DOCTYPE html>
|
||
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>CCOrd (containers.CCOrd)</title><link rel="stylesheet" href="../../odoc.css"/><meta charset="utf-8"/><meta name="generator" content="odoc 2.1.0"/><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> » CCOrd</nav><header class="odoc-preamble"><h1>Module <code><span>CCOrd</span></code></h1><p>Order combinators</p></header><nav class="odoc-toc"><ul><li><a href="#comparisons">Comparisons</a></li><li><a href="#lexicographic-combination">Lexicographic Combination</a></li></ul></nav><div class="odoc-content"><h3 id="comparisons"><a href="#comparisons" class="anchor"></a>Comparisons</h3><div class="odoc-spec"><div class="spec type" id="type-t" class="anchored"><a href="#type-t" class="anchor"></a><code><span><span class="keyword">type</span> <span>'a t</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 class="spec-doc"><p>Comparison (total ordering) between two elements, that returns an int.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-poly" class="anchored"><a href="#val-poly" class="anchor"></a><code><span><span class="keyword">val</span> poly : <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p>Polymorphic "magic" comparison. Use with care, as it will fail on some types.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 3.6</li></ul></div></div><div class="odoc-spec"><div class="spec value" id="val-compare" class="anchored"><a href="#val-compare" class="anchor"></a><code><span><span class="keyword">val</span> compare : <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p>Polymorphic "magic" comparison.</p><ul class="at-tags"><li class="deprecated"><span class="at-tag">deprecated</span> <p>since 3.6 in favor of <code>poly</code>. The reason is that <code>compare</code> is easily shadowed, can shadow other comparators, and is just generally not very descriptive.</p></li></ul></div></div><div class="odoc-spec"><div class="spec value" id="val-opp" class="anchored"><a href="#val-opp" class="anchor"></a><code><span><span class="keyword">val</span> opp : <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p>Opposite order. For example, <code>opp cmp a b < 0</code> iff <code>cmp b a > 0</code>. This can be used to sort values in the opposite order, among other things.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-equiv" class="anchored"><a href="#val-equiv" class="anchor"></a><code><span><span class="keyword">val</span> equiv : <span>int <span class="arrow">-></span></span> <span>int <span class="arrow">-></span></span> bool</span></code></div><div class="spec-doc"><p>Returns <code>true</code> iff the two comparison results are the same.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-int" class="anchored"><a href="#val-int" class="anchor"></a><code><span><span class="keyword">val</span> int : <span>int <a href="#type-t">t</a></span></span></code></div></div><div class="odoc-spec"><div class="spec value" id="val-string" class="anchored"><a href="#val-string" class="anchor"></a><code><span><span class="keyword">val</span> string : <span>string <a href="#type-t">t</a></span></span></code></div></div><div class="odoc-spec"><div class="spec value" id="val-bool" class="anchored"><a href="#val-bool" class="anchor"></a><code><span><span class="keyword">val</span> bool : <span>bool <a href="#type-t">t</a></span></span></code></div></div><div class="odoc-spec"><div class="spec value" id="val-float" class="anchored"><a href="#val-float" class="anchor"></a><code><span><span class="keyword">val</span> float : <span>float <a href="#type-t">t</a></span></span></code></div></div><h3 id="lexicographic-combination"><a href="#lexicographic-combination" class="anchor"></a>Lexicographic Combination</h3><div class="odoc-spec"><div class="spec value" id="val-(<?>)" class="anchored"><a href="#val-(<?>)" class="anchor"></a><code><span><span class="keyword">val</span> (<?>) : <span>int <span class="arrow">-></span></span> <span><span>(<span><span class="type-var">'a</span> <a href="#type-t">t</a></span> * <span class="type-var">'a</span> * <span class="type-var">'a</span>)</span> <span class="arrow">-></span></span> int</span></code></div><div class="spec-doc"><p><code>c1 <?> (ord, x, y)</code> returns the same as <code>c1</code> if <code>c1</code> is not <code>0</code>; otherwise it uses <code>ord</code> to compare the two values <code>x</code> and <code>y</code>, of type <code>'a</code>.</p><p>Example:</p><pre><code>CCInt.compare 1 3
|
||
<?> (String.compare, "a", "b")
|
||
<?> (CCBool.compare, true, false)</code></pre><p>Same example, using only CCOrd::</p><pre><code>CCOrd.(int 1 3
|
||
<?> (string, "a", "b")
|
||
<?> (bool, true, false))</code></pre></div></div><div class="odoc-spec"><div class="spec value" id="val-option" class="anchored"><a href="#val-option" class="anchor"></a><code><span><span class="keyword">val</span> option : <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span><span><span class="type-var">'a</span> option</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p>Comparison of optional values. <code>None</code> is smaller than any <code>Some _</code>.</p><ul class="at-tags"><li class="since"><span class="at-tag">since</span> 0.15</li></ul></div></div><div class="odoc-spec"><div class="spec value" id="val-pair" class="anchored"><a href="#val-pair" class="anchor"></a><code><span><span class="keyword">val</span> pair : <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span><span><span class="type-var">'b</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-t">t</a></span></span></code></div></div><div class="odoc-spec"><div class="spec value" id="val-triple" class="anchored"><a href="#val-triple" class="anchor"></a><code><span><span class="keyword">val</span> triple : <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span><span><span class="type-var">'b</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span><span><span class="type-var">'c</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">'c</span>)</span> <a href="#type-t">t</a></span></span></code></div></div><div class="odoc-spec"><div class="spec value" id="val-list" class="anchored"><a href="#val-list" class="anchor"></a><code><span><span class="keyword">val</span> list : <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span><span><span class="type-var">'a</span> list</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p>Lexicographic combination on lists.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-array" class="anchored"><a href="#val-array" class="anchor"></a><code><span><span class="keyword">val</span> array : <span><span><span class="type-var">'a</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span><span><span class="type-var">'a</span> array</span> <a href="#type-t">t</a></span></span></code></div></div><div class="odoc-spec"><div class="spec value" id="val-map" class="anchored"><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 class="type-var">'b</span> <a href="#type-t">t</a></span> <span class="arrow">-></span></span> <span><span class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p><code>map f ord</code> is the comparison function that, given objects <code>x</code> and <code>y</code>, projects <code>x</code> and <code>y</code> using <code>f</code> (e.g. using a record field) and then compares those projections with <code>ord</code>. Example: <code>map fst CCInt.compare</code> compares values of type <code>(int * 'a)</code> by their first component.</p></div></div><div class="odoc-spec"><div class="spec value" id="val-(>|=)" class="anchored"><a href="#val-(>|=)" class="anchor"></a><code><span><span class="keyword">val</span> (>|=) : <span><span><span class="type-var">'b</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 class="type-var">'a</span> <a href="#type-t">t</a></span></span></code></div><div class="spec-doc"><p>Infix equivalent of <a href="#val-map"><code>map</code></a>.</p></div></div><div class="odoc-spec"><div class="spec module" id="module-Infix" class="anchored"><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></body></html> |