ocaml-containers/2.0/containers/CCList/index.html
2018-02-11 10:02:48 -06:00

95 lines
No EOL
105 KiB
HTML
Raw Permalink 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.

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml"><head><title>CCList (containers.CCList)</title><link rel="stylesheet" href="../../odoc.css"/><meta charset="utf-8"/><meta name="viewport" content="width=device-width,initial-scale=1.0"/><meta name="generator" content="doc-ock-html v1.0.0-1-g1fc9bf0"/></head><body><nav id="top"><a href="../index.html">Up</a> &mdash; <span class="package">package <a href="../index.html">containers</a></span></nav><header><h1><span class="keyword">Module</span> <span class="module-path">CCList</span></h1></header><h2>Complements to list</h2><div class="spec type" id="type-sequence"><a href="#type-sequence" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>'a sequence</code><code><span class="keyword"> = </span>(<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> unit) <span class="keyword">&#8209;&gt;</span> unit</code><code></code></div><div class="doc"></div></div><div class="spec type" id="type-gen"><a href="#type-gen" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>'a gen</code><code><span class="keyword"> = </span>unit <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> option</code><code></code></div><div class="doc"></div></div><div class="spec type" id="type-klist"><a href="#type-klist" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>'a klist</code><code><span class="keyword"> = </span>unit <span class="keyword">&#8209;&gt;</span> [ `Nil | `Cons of <span class="type-var">'a</span><span class="keyword"> * </span><span class="type-var">'a</span> <a href="index.html#type-klist">klist</a> ]</code><code></code></div><div class="doc"></div></div><div class="spec type" id="type-printer"><a href="#type-printer" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>'a printer</code><code><span class="keyword"> = </span>Format.formatter <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> unit</code><code></code></div><div class="doc"></div></div><div class="spec type" id="type-random_gen"><a href="#type-random_gen" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>'a random_gen</code><code><span class="keyword"> = </span>Random.State.t <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span></code><code></code></div><div class="doc"></div></div><div class="spec include"><div class="doc"></div><details open="open"><summary><span class="def"><code><span class="keyword">include </span><span class="keyword">module type of </span>List</code></span></summary><div class="spec val" id="val-length"><a href="#val-length" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>length : <span class="type-var">'a</span> list <span class="keyword">&#8209;&gt;</span> int</code></div><div class="doc"></div></div><div class="spec val" id="val-compare_lengths"><a href="#val-compare_lengths" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>compare_lengths : <span class="type-var">'a</span> list <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> list <span class="keyword">&#8209;&gt;</span> int</code></div><div class="doc"></div></div><div class="spec val" id="val-compare_length_with"><a href="#val-compare_length_with" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>compare_length_with : <span class="type-var">'a</span> list <span class="keyword">&#8209;&gt;</span> int <span class="keyword">&#8209;&gt;</span> int</code></div><div class="doc"></div></div><div class="spec val" id="val-cons"><a href="#val-cons" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>cons : <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list</code></div><div class="doc"></div></div><div class="spec val" id="val-hd"><a href="#val-hd" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>hd : <span class="type-var">'a</span> list <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span></code></div><div class="doc"></div></div><div class="spec val" id="val-tl"><a href="#val-tl" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>tl : <span class="type-var">'a</span> list <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list</code></div><div class="doc"></div></div><div class="spec val" id="val-nth"><a href="#val-nth" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>nth : <span class="type-var">'a</span> list <span class="keyword">&#8209;&gt;</span> int <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span></code></div><div class="doc"></div></div><div class="spec val" id="val-nth_opt"><a href="#val-nth_opt" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>nth_opt : <span class="type-var">'a</span> list <span class="keyword">&#8209;&gt;</span> int <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> option</code></div><div class="doc"></div></div><div class="spec val" id="val-rev"><a href="#val-rev" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>rev : <span class="type-var">'a</span> list <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list</code></div><div class="doc"></div></div><div class="spec val" id="val-append"><a href="#val-append" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>append : <span class="type-var">'a</span> list <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list</code></div><div class="doc"></div></div><div class="spec val" id="val-rev_append"><a href="#val-rev_append" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>rev_append : <span class="type-var">'a</span> list <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list</code></div><div class="doc"></div></div><div class="spec val" id="val-concat"><a href="#val-concat" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>concat : <span class="type-var">'a</span> list list <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list</code></div><div class="doc"></div></div><div class="spec val" id="val-flatten"><a href="#val-flatten" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>flatten : <span class="type-var">'a</span> list list <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list</code></div><div class="doc"></div></div><div class="spec val" id="val-iter"><a href="#val-iter" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>iter : (<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> unit) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list <span class="keyword">&#8209;&gt;</span> unit</code></div><div class="doc"></div></div><div class="spec val" id="val-iteri"><a href="#val-iteri" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>iteri : (int <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> unit) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list <span class="keyword">&#8209;&gt;</span> unit</code></div><div class="doc"></div></div><div class="spec val" id="val-map"><a href="#val-map" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>map : (<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span>) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> list</code></div><div class="doc"></div></div><div class="spec val" id="val-mapi"><a href="#val-mapi" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>mapi : (int <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span>) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> list</code></div><div class="doc"></div></div><div class="spec val" id="val-rev_map"><a href="#val-rev_map" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>rev_map : (<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span>) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> list</code></div><div class="doc"></div></div><div class="spec val" id="val-fold_left"><a href="#val-fold_left" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>fold_left : (<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span>) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> list <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span></code></div><div class="doc"></div></div><div class="spec val" id="val-fold_right"><a href="#val-fold_right" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>fold_right : (<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span>) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span></code></div><div class="doc"></div></div><div class="spec val" id="val-iter2"><a href="#val-iter2" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>iter2 : (<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> <span class="keyword">&#8209;&gt;</span> unit) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> list <span class="keyword">&#8209;&gt;</span> unit</code></div><div class="doc"></div></div><div class="spec val" id="val-map2"><a href="#val-map2" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>map2 : (<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'c</span>) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> list <span class="keyword">&#8209;&gt;</span> <span class="type-var">'c</span> list</code></div><div class="doc"></div></div><div class="spec val" id="val-rev_map2"><a href="#val-rev_map2" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>rev_map2 : (<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'c</span>) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> list <span class="keyword">&#8209;&gt;</span> <span class="type-var">'c</span> list</code></div><div class="doc"></div></div><div class="spec val" id="val-fold_left2"><a href="#val-fold_left2" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>fold_left2 : (<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'c</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span>) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> list <span class="keyword">&#8209;&gt;</span> <span class="type-var">'c</span> list <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span></code></div><div class="doc"></div></div><div class="spec val" id="val-fold_right2"><a href="#val-fold_right2" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>fold_right2 : (<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'c</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'c</span>) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> list <span class="keyword">&#8209;&gt;</span> <span class="type-var">'c</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'c</span></code></div><div class="doc"></div></div><div class="spec val" id="val-for_all"><a href="#val-for_all" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>for_all : (<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> bool) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list <span class="keyword">&#8209;&gt;</span> bool</code></div><div class="doc"></div></div><div class="spec val" id="val-exists"><a href="#val-exists" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>exists : (<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> bool) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list <span class="keyword">&#8209;&gt;</span> bool</code></div><div class="doc"></div></div><div class="spec val" id="val-for_all2"><a href="#val-for_all2" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>for_all2 : (<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> <span class="keyword">&#8209;&gt;</span> bool) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> list <span class="keyword">&#8209;&gt;</span> bool</code></div><div class="doc"></div></div><div class="spec val" id="val-exists2"><a href="#val-exists2" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>exists2 : (<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> <span class="keyword">&#8209;&gt;</span> bool) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> list <span class="keyword">&#8209;&gt;</span> bool</code></div><div class="doc"></div></div><div class="spec val" id="val-mem"><a href="#val-mem" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>mem : <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list <span class="keyword">&#8209;&gt;</span> bool</code></div><div class="doc"></div></div><div class="spec val" id="val-memq"><a href="#val-memq" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>memq : <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list <span class="keyword">&#8209;&gt;</span> bool</code></div><div class="doc"></div></div><div class="spec val" id="val-find"><a href="#val-find" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>find : (<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> bool) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span></code></div><div class="doc"></div></div><div class="spec val" id="val-find_opt"><a href="#val-find_opt" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>find_opt : (<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> bool) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> option</code></div><div class="doc"></div></div><div class="spec val" id="val-filter"><a href="#val-filter" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>filter : (<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> bool) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list</code></div><div class="doc"></div></div><div class="spec val" id="val-find_all"><a href="#val-find_all" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>find_all : (<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> bool) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list</code></div><div class="doc"></div></div><div class="spec val" id="val-partition"><a href="#val-partition" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>partition : (<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> bool) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list<span class="keyword"> * </span><span class="type-var">'a</span> list</code></div><div class="doc"></div></div><div class="spec val" id="val-assoc"><a href="#val-assoc" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>assoc : <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> (<span class="type-var">'a</span><span class="keyword"> * </span><span class="type-var">'b</span>) list <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span></code></div><div class="doc"></div></div><div class="spec val" id="val-assoc_opt"><a href="#val-assoc_opt" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>assoc_opt : <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> (<span class="type-var">'a</span><span class="keyword"> * </span><span class="type-var">'b</span>) list <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> option</code></div><div class="doc"></div></div><div class="spec val" id="val-assq"><a href="#val-assq" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>assq : <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> (<span class="type-var">'a</span><span class="keyword"> * </span><span class="type-var">'b</span>) list <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span></code></div><div class="doc"></div></div><div class="spec val" id="val-assq_opt"><a href="#val-assq_opt" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>assq_opt : <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> (<span class="type-var">'a</span><span class="keyword"> * </span><span class="type-var">'b</span>) list <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> option</code></div><div class="doc"></div></div><div class="spec val" id="val-mem_assoc"><a href="#val-mem_assoc" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>mem_assoc : <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> (<span class="type-var">'a</span><span class="keyword"> * </span><span class="type-var">'b</span>) list <span class="keyword">&#8209;&gt;</span> bool</code></div><div class="doc"></div></div><div class="spec val" id="val-mem_assq"><a href="#val-mem_assq" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>mem_assq : <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> (<span class="type-var">'a</span><span class="keyword"> * </span><span class="type-var">'b</span>) list <span class="keyword">&#8209;&gt;</span> bool</code></div><div class="doc"></div></div><div class="spec val" id="val-remove_assoc"><a href="#val-remove_assoc" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>remove_assoc : <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> (<span class="type-var">'a</span><span class="keyword"> * </span><span class="type-var">'b</span>) list <span class="keyword">&#8209;&gt;</span> (<span class="type-var">'a</span><span class="keyword"> * </span><span class="type-var">'b</span>) list</code></div><div class="doc"></div></div><div class="spec val" id="val-remove_assq"><a href="#val-remove_assq" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>remove_assq : <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> (<span class="type-var">'a</span><span class="keyword"> * </span><span class="type-var">'b</span>) list <span class="keyword">&#8209;&gt;</span> (<span class="type-var">'a</span><span class="keyword"> * </span><span class="type-var">'b</span>) list</code></div><div class="doc"></div></div><div class="spec val" id="val-split"><a href="#val-split" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>split : (<span class="type-var">'a</span><span class="keyword"> * </span><span class="type-var">'b</span>) list <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list<span class="keyword"> * </span><span class="type-var">'b</span> list</code></div><div class="doc"></div></div><div class="spec val" id="val-combine"><a href="#val-combine" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>combine : <span class="type-var">'a</span> list <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> list <span class="keyword">&#8209;&gt;</span> (<span class="type-var">'a</span><span class="keyword"> * </span><span class="type-var">'b</span>) list</code></div><div class="doc"></div></div><div class="spec val" id="val-sort"><a href="#val-sort" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>sort : (<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> int) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list</code></div><div class="doc"></div></div><div class="spec val" id="val-stable_sort"><a href="#val-stable_sort" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>stable_sort : (<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> int) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list</code></div><div class="doc"></div></div><div class="spec val" id="val-fast_sort"><a href="#val-fast_sort" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>fast_sort : (<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> int) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list</code></div><div class="doc"></div></div><div class="spec val" id="val-sort_uniq"><a href="#val-sort_uniq" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>sort_uniq : (<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> int) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list</code></div><div class="doc"></div></div><div class="spec val" id="val-merge"><a href="#val-merge" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>merge : (<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> int) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list</code></div><div class="doc"></div></div></details></div><div class="spec type" id="type-t"><a href="#type-t" class="anchor"></a><div class="def type"><code><span class="keyword">type </span>'a t</code><code><span class="keyword"> = </span><span class="type-var">'a</span> list</code><code></code></div><div class="doc"></div></div><div class="spec val" id="val-empty"><a href="#val-empty" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>empty : <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p><code class="code">empty</code> is <code class="code"></code>.</p></div></div><div class="spec val" id="val-is_empty"><a href="#val-is_empty" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>is_empty : <span class="type-var">_</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> bool</code></div><div class="doc"><p><code class="code">is_empty l</code> returns <code class="code">true</code> iff <code class="code">l = []</code>.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.11</li></ul></div></div><div class="spec val" id="val-map"><a href="#val-map" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>map : (<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span>) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Safe version of <span class="xref-unresolved" title="unresolved reference to &quot;List.map&quot;">List.map</span>.</p></div></div><div class="spec val" id="val-(&gt;|=)"><a href="#val-(&gt;|=)" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>(&gt;|=) : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> (<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span>) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Infix version of <code class="code">map</code> with reversed arguments.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.5</li></ul></div></div><div class="spec val" id="val-cons"><a href="#val-cons" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>cons : <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p><code class="code">cons x l</code> is <code class="code">x::l</code>.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.12</li></ul></div></div><div class="spec val" id="val-append"><a href="#val-append" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>append : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Safe version of <span class="xref-unresolved" title="unresolved reference to &quot;List.append&quot;">List.append</span>.
Concatenate two lists.</p></div></div><div class="spec val" id="val-cons_maybe"><a href="#val-cons_maybe" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>cons_maybe : <span class="type-var">'a</span> option <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p><code class="code">cons_maybe (Some x) l</code> is <code class="code">x :: l</code>.
<code class="code">cons_maybe None l</code> is <code class="code">l</code>.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.13</li></ul></div></div><div class="spec val" id="val-(@)"><a href="#val-(@)" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>(@) : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Like <code class="code">append</code>.
Concatenate two lists.</p></div></div><div class="spec val" id="val-filter"><a href="#val-filter" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>filter : (<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> bool) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Safe version of <span class="xref-unresolved" title="unresolved reference to &quot;List.filter&quot;">List.filter</span>.
<code class="code">filter p l</code> returns all the elements of the list <code class="code">l</code>
that satisfy the predicate <code class="code">p</code>. The order of the elements
in the input list is preserved.</p></div></div><div class="spec val" id="val-fold_right"><a href="#val-fold_right" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>fold_right : (<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span>) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span></code></div><div class="doc"><p>Safe version of <code class="code">fold_right</code>.
<code class="code">fold_right f [a1; ...; an] b</code> is
<code class="code">f a1 (f a2 (... (f an b) ...))</code>. Not tail-recursive.</p></div></div><div class="spec val" id="val-fold_while"><a href="#val-fold_while" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>fold_while : (<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span><span class="keyword"> * </span>[ `Stop | `Continue ]) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span></code></div><div class="doc"><p>Fold until a stop condition via <code class="code">('a, `Stop)</code> is
indicated by the accumulator.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.8</li></ul></div></div><div class="spec val" id="val-fold_map"><a href="#val-fold_map" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>fold_map : (<span class="type-var">'acc</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'acc</span><span class="keyword"> * </span><span class="type-var">'b</span>) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'acc</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list <span class="keyword">&#8209;&gt;</span> <span class="type-var">'acc</span><span class="keyword"> * </span><span class="type-var">'b</span> list</code></div><div class="doc"><p><code class="code">fold_map f acc l</code> is a <code class="code">fold_left</code>-like function, but it also maps the
list to another list.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.14</li></ul></div></div><div class="spec val" id="val-scan_left"><a href="#val-scan_left" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>scan_left : (<span class="type-var">'acc</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'acc</span>) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'acc</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list <span class="keyword">&#8209;&gt;</span> <span class="type-var">'acc</span> list</code></div><div class="doc"><p><code class="code">scan_left f acc l</code> returns the list <code class="code">[acc; f acc x0; f (f acc x0) x1; ...]</code>
where <code class="code">x0</code>, <code class="code">x1</code>, etc. are the elements of <code class="code">l</code>.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 1.2</li></ul></div></div><div class="spec val" id="val-fold_map2"><a href="#val-fold_map2" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>fold_map2 : (<span class="type-var">'acc</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'acc</span><span class="keyword"> * </span><span class="type-var">'c</span>) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'acc</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> list <span class="keyword">&#8209;&gt;</span> <span class="type-var">'acc</span><span class="keyword"> * </span><span class="type-var">'c</span> list</code></div><div class="doc"><p><code class="code">fold_map2</code> is to <code class="code">fold_map</code> what <code class="code">List.map2</code> is to <code class="code">List.map</code>.</p><ul class="at-tag"><li><span class="at-tag raise">Raises</span> <span class="module-path">Invalid_argument</span>: if the lists do not have the same length.</li><li><span class="at-tag since">Since</span>: 0.16</li></ul></div></div><div class="spec val" id="val-fold_filter_map"><a href="#val-fold_filter_map" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>fold_filter_map : (<span class="type-var">'acc</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'acc</span><span class="keyword"> * </span><span class="type-var">'b</span> option) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'acc</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list <span class="keyword">&#8209;&gt;</span> <span class="type-var">'acc</span><span class="keyword"> * </span><span class="type-var">'b</span> list</code></div><div class="doc"><p><code class="code">fold_filter_map f acc l</code> is a <code class="code">fold_left</code>-like function, but also
generates a list of output in a way similar to <a href="index.html#val-filter_map">filter_map</a>.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.17</li></ul></div></div><div class="spec val" id="val-fold_flat_map"><a href="#val-fold_flat_map" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>fold_flat_map : (<span class="type-var">'acc</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'acc</span><span class="keyword"> * </span><span class="type-var">'b</span> list) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'acc</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list <span class="keyword">&#8209;&gt;</span> <span class="type-var">'acc</span><span class="keyword"> * </span><span class="type-var">'b</span> list</code></div><div class="doc"><p><code class="code">fold_flat_map f acc l</code> is a <code class="code">fold_left</code>-like function, but it also maps the
list to a list of lists that is then <code class="code">flatten</code>'d.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.14</li></ul></div></div><div class="spec val" id="val-count"><a href="#val-count" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>count : (<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> bool) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list <span class="keyword">&#8209;&gt;</span> int</code></div><div class="doc"><p><code class="code">count f l</code> counts how much elements of <code class="code">l</code> comply with the function <code class="code">f</code>.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 1.5</li></ul></div></div><div class="spec val" id="val-init"><a href="#val-init" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>init : int <span class="keyword">&#8209;&gt;</span> (int <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span>) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p><code class="code">init len f</code> is <code class="code">f 0; f 1; ...; f (len-1)</code>.</p><ul class="at-tag"><li><span class="at-tag raise">Raises</span> <span class="module-path">Invalid_argument</span>: if len &lt; 0.</li><li><span class="at-tag since">Since</span>: 0.6</li></ul></div></div><div class="spec val" id="val-combine"><a href="#val-combine" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>combine : <span class="type-var">'a</span> list <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> list <span class="keyword">&#8209;&gt;</span> (<span class="type-var">'a</span><span class="keyword"> * </span><span class="type-var">'b</span>) list</code></div><div class="doc"><p>Similar to <span class="xref-unresolved" title="unresolved reference to &quot;List.combine&quot;">List.combine</span> but tail-recursive.
Transform a pair of lists into a list of pairs:
<code class="code">combine [a1; ...; an] [b1; ...; bn]</code> is
<code class="code">[(a1,b1); ...; (an,bn)]</code>.</p><ul class="at-tag"><li><span class="at-tag raise">Raises</span> <span class="module-path">Invalid_argument</span>: if the lists have distinct lengths.</li><li><span class="at-tag since">Since</span>: 1.2</li></ul></div></div><div class="spec val" id="val-combine_gen"><a href="#val-combine_gen" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>combine_gen : <span class="type-var">'a</span> list <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> list <span class="keyword">&#8209;&gt;</span> (<span class="type-var">'a</span><span class="keyword"> * </span><span class="type-var">'b</span>) <a href="index.html#type-gen">gen</a></code></div><div class="doc"><p>Lazy version of <a href="index.html#val-combine">combine</a>.
Unlike <a href="index.html#val-combine">combine</a>, it does not fail if the lists have different
lengths;
instead, the output has as many pairs as the smallest input list.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 1.2</li></ul></div></div><div class="spec val" id="val-split"><a href="#val-split" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>split : (<span class="type-var">'a</span><span class="keyword"> * </span><span class="type-var">'b</span>) <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a><span class="keyword"> * </span><span class="type-var">'b</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>A tail-recursive version of <span class="xref-unresolved" title="unresolved reference to &quot;List.split&quot;">List.split</span>.
Transform a list of pairs into a pair of lists:
<code class="code">split [(a1,b1); ...; (an,bn)]</code> is <code class="code">([a1; ...; an], [b1; ...; bn])</code>.</p></div></div><div class="spec val" id="val-compare"><a href="#val-compare" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>compare : (<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> int) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> int</code></div><div class="doc"></div></div><div class="spec val" id="val-compare_lengths"><a href="#val-compare_lengths" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>compare_lengths : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> int</code></div><div class="doc"><p>Equivalent to <code class="code">compare (length l1) (length l2)</code> but more efficient.
Compare the lengths of two lists.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 1.5</li></ul></div></div><div class="spec val" id="val-compare_length_with"><a href="#val-compare_length_with" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>compare_length_with : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> int <span class="keyword">&#8209;&gt;</span> int</code></div><div class="doc"><p>Equivalent to <code class="code">compare (length l) x</code> but more efficient.
Compare the length of a list to an integer.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 1.5</li></ul></div></div><div class="spec val" id="val-equal"><a href="#val-equal" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>equal : (<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> bool) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> bool</code></div><div class="doc"></div></div><div class="spec val" id="val-flat_map"><a href="#val-flat_map" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>flat_map : (<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> <a href="index.html#type-t">t</a>) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Map and flatten at the same time (safe). Evaluation order is not guaranteed.</p></div></div><div class="spec val" id="val-flatten"><a href="#val-flatten" class="anchor"></a><div class="def val"><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 class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Safe flatten. Concatenate a list of lists.</p></div></div><div class="spec val" id="val-product"><a href="#val-product" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>product : (<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'c</span>) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'c</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Cartesian product of the two lists, with the given combinator.</p></div></div><div class="spec val" id="val-fold_product"><a href="#val-fold_product" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>fold_product : (<span class="type-var">'c</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'c</span>) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'c</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'c</span></code></div><div class="doc"><p>Fold on the cartesian product.</p></div></div><div class="spec val" id="val-cartesian_product"><a href="#val-cartesian_product" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>cartesian_product : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Produce the cartesian product of this list of lists,
by returning all the ways of picking one element per sublist.
<b>NOTE</b> the order of the returned list is unspecified.
For example:
</p><pre><code class="code"> # cartesian_product [[1;2];[3];[4;5;6]] |&gt; sort =
[[1;3;4];[1;3;5];[1;3;6];[2;3;4];[2;3;5];[2;3;6]];;
# cartesian_product [[1;2];[];[4;5;6]] = [];;
# cartesian_product [[1;2];[3];[4];[5];[6]] |&gt; sort =
[[1;3;4;5;6];[2;3;4;5;6]];;</code></pre><p>
invariant: <code class="code">cartesian_product l = map_product id l</code>.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 1.2</li></ul></div></div><div class="spec val" id="val-map_product_l"><a href="#val-map_product_l" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>map_product_l : (<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> list) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> list list</code></div><div class="doc"><p><code class="code">map_product_l f l</code> maps each element of <code class="code">l</code> to a list of
objects of type <code class="code">'b</code> using <code class="code">f</code>.
We obtain <code class="code">[l1;l2;...;ln]</code> where <code class="code">length l=n</code> and <code class="code">li : 'b list</code>.
Then, it returns all the ways of picking exactly one element per <code class="code">li</code>.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 1.2</li></ul></div></div><div class="spec val" id="val-diagonal"><a href="#val-diagonal" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>diagonal : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> (<span class="type-var">'a</span><span class="keyword"> * </span><span class="type-var">'a</span>) <a href="index.html#type-t">t</a></code></div><div class="doc"><p>All pairs of distinct positions of the list. <code class="code">list_diagonal l</code> will
return the list of <code class="code">List.nth i l, List.nth j l</code> if <code class="code">i &lt; j</code>.</p></div></div><div class="spec val" id="val-partition_map"><a href="#val-partition_map" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>partition_map : (<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> [&lt; `Left of <span class="type-var">'b</span> | `Right of <span class="type-var">'c</span> | `Drop ]) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> list<span class="keyword"> * </span><span class="type-var">'c</span> list</code></div><div class="doc"><p><code class="code">partition_map f l</code> maps <code class="code">f</code> on <code class="code">l</code> and gather results in lists:
</p><ul><li>if <code class="code">f x = `Left y</code>, adds <code class="code">y</code> to the first list.</li><li>if <code class="code">f x = `Right z</code>, adds <code class="code">z</code> to the second list.</li><li>if <code class="code">f x = `Drop</code>, ignores <code class="code">x</code>.</li></ul><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.11</li></ul></div></div><div class="spec val" id="val-sublists_of_len"><a href="#val-sublists_of_len" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>sublists_of_len : ?&#8288;last:(<span class="type-var">'a</span> list <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list option) <span class="keyword">&#8209;&gt;</span> ?&#8288;offset:int <span class="keyword">&#8209;&gt;</span> int <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list list</code></div><div class="doc"><p><code class="code">sublists_of_len n l</code> returns sub-lists of <code class="code">l</code> that have length <code class="code">n</code>.
By default, these sub-lists are non overlapping:
<code class="code">sublists_of_len 2 [1;2;3;4;5;6]</code> returns <code class="code">[1;2]; [3;4]; [5;6]</code>.</p><p>Examples:</p><ul><li><code class="code">sublists_of_len 2 [1;2;3;4;5;6] = [[1;2]; [3;4]; [5;6]]</code>.</li><li><code class="code">sublists_of_len 2 ~offset:3 [1;2;3;4;5;6] = [1;2];[4;5]</code>.</li><li><code class="code">sublists_of_len 3 ~last:CCOpt.return [1;2;3;4] = [1;2;3];[4]</code>.</li><li><code class="code">sublists_of_len 2 [1;2;3;4;5] = [[1;2]; [3;4]]</code>.</li></ul><ul class="at-tag"><li><span class="at-tag parameter">Parameter</span> <span class="module-path">offset</span>: the number of elements skipped between two consecutive
sub-lists. By default it is <code class="code">n</code>. If <code class="code">offset &lt; n</code>, the sub-lists
will overlap; if <code class="code">offset &gt; n</code>, some elements will not appear at all.</li><li><span class="at-tag parameter">Parameter</span> <span class="module-path">last</span>: if provided and the last group of elements <code class="code">g</code> is such
that <code class="code">length g &lt; n</code>, <code class="code">last g</code> is called. If <code class="code">last g = Some g'</code>,
<code class="code">g'</code> is appended; otherwise <code class="code">g</code> is dropped.
If <code class="code">last = CCOpt.return</code>, it will simply keep the last group.
By default, <code class="code">last = fun _ -&gt; None</code>, i.e. the last group is dropped if shorter than <code class="code">n</code>.</li><li><span class="at-tag raise">Raises</span> <span class="module-path">Invalid_argument</span>: if <code class="code">offset &lt;= 0</code> or <code class="code">n &lt;= 0</code>.</li><li><span class="at-tag since">Since</span>: 1.0</li></ul></div></div><div class="spec val" id="val-pure"><a href="#val-pure" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>pure : <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p><code class="code">pure</code> is <code class="code">return</code>.</p></div></div><div class="spec val" id="val-(&lt;*&gt;)"><a href="#val-(&lt;*&gt;)" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>(&lt;*&gt;) : (<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span>) <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p><code class="code">funs &lt;*&gt; l</code> is <code class="code">product (fun f x -&gt; f x) funs l</code>.</p></div></div><div class="spec val" id="val-(&lt;$&gt;)"><a href="#val-(&lt;$&gt;)" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>(&lt;$&gt;) : (<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span>) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p><code class="code">(&lt;$&gt;)</code> = <code class="code">map</code>.</p></div></div><div class="spec val" id="val-return"><a href="#val-return" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>return : <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p><code class="code">return x</code> is <code class="code">x</code>.</p></div></div><div class="spec val" id="val-(&gt;&gt;=)"><a href="#val-(&gt;&gt;=)" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>(&gt;&gt;=) : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> (<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> <a href="index.html#type-t">t</a>) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p><code class="code">l &gt;&gt;= f</code> is <code class="code">flat_map f l</code>.</p></div></div><div class="spec val" id="val-take"><a href="#val-take" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>take : int <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Take the <code class="code">n</code> first elements, drop the rest.</p></div></div><div class="spec val" id="val-drop"><a href="#val-drop" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>drop : int <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Drop the <code class="code">n</code> first elements, keep the rest.</p></div></div><div class="spec val" id="val-hd_tl"><a href="#val-hd_tl" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>hd_tl : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span><span class="keyword"> * </span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p><code class="code">hd_tl (x :: l)</code> returns <code class="code">hd, l</code>.</p><ul class="at-tag"><li><span class="at-tag raise">Raises</span> <span class="module-path">Failure</span>: if the list is empty.</li><li><span class="at-tag since">Since</span>: 0.16</li></ul></div></div><div class="spec val" id="val-take_drop"><a href="#val-take_drop" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>take_drop : int <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a><span class="keyword"> * </span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p><code class="code">take_drop n l</code> returns <code class="code">l1, l2</code> such that <code class="code">l1 @ l2 = l</code> and
<code class="code">length l1 = min (length l) n</code>.</p></div></div><div class="spec val" id="val-take_while"><a href="#val-take_while" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>take_while : (<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> bool) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p><code class="code">take_while f l</code> returns the longest prefix of <code class="code">l</code> for which <code class="code">f</code> is <code class="code">true</code>.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.13</li></ul></div></div><div class="spec val" id="val-drop_while"><a href="#val-drop_while" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>drop_while : (<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> bool) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p><code class="code">drop_while f l</code> drops the longest prefix of <code class="code">l</code> for which <code class="code">f</code> is <code class="code">true</code>.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.13</li></ul></div></div><div class="spec val" id="val-take_drop_while"><a href="#val-take_drop_while" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>take_drop_while : (<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> bool) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a><span class="keyword"> * </span><span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p><code class="code">take_drop_while p l</code> = <code class="code">take_while p l, drop_while p l</code>.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 1.2</li></ul></div></div><div class="spec val" id="val-last"><a href="#val-last" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>last : int <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p><code class="code">last n l</code> takes the last <code class="code">n</code> elements of <code class="code">l</code> (or less if
<code class="code">l</code> doesn't have that many elements.</p></div></div><div class="spec val" id="val-head_opt"><a href="#val-head_opt" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>head_opt : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> option</code></div><div class="doc"><p>First element.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.20</li></ul></div></div><div class="spec val" id="val-tail_opt"><a href="#val-tail_opt" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>tail_opt : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> option</code></div><div class="doc"><p>Return the given list without its first element.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 2.0</li></ul></div></div><div class="spec val" id="val-last_opt"><a href="#val-last_opt" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>last_opt : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> option</code></div><div class="doc"><p>Last element.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.20</li></ul></div></div><div class="spec val" id="val-find_pred"><a href="#val-find_pred" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>find_pred : (<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> bool) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> option</code></div><div class="doc"><p><code class="code">find_pred p l</code> finds the first element of <code class="code">l</code> that satisfies <code class="code">p</code>,
or returns <code class="code">None</code> if no element satisfies <code class="code">p</code>.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.11</li></ul></div></div><div class="spec val" id="val-find_opt"><a href="#val-find_opt" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>find_opt : (<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> bool) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> option</code></div><div class="doc"><p>Safe version of <a href="index.html#val-find">find</a>.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 1.5</li></ul></div></div><div class="spec val" id="val-find_pred_exn"><a href="#val-find_pred_exn" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>find_pred_exn : (<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> bool) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span></code></div><div class="doc"><p>Unsafe version of <a href="index.html#val-find_pred">find_pred</a>.</p><ul class="at-tag"><li><span class="at-tag raise">Raises</span> <span class="module-path">Not_found</span>: if no such element is found.</li><li><span class="at-tag since">Since</span>: 0.11</li></ul></div></div><div class="spec val" id="val-find_map"><a href="#val-find_map" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>find_map : (<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> option) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> option</code></div><div class="doc"><p><code class="code">find_map f l</code> traverses <code class="code">l</code>, applying <code class="code">f</code> to each element. If for
some element <code class="code">x</code>, <code class="code">f x = Some y</code>, then <code class="code">Some y</code> is returned. Otherwise
the call returns <code class="code">None</code>.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.11</li></ul></div></div><div class="spec val" id="val-find_mapi"><a href="#val-find_mapi" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>find_mapi : (int <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> option) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> option</code></div><div class="doc"><p>Like <a href="index.html#val-find_map">find_map</a>, but also pass the index to the predicate function.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.11</li></ul></div></div><div class="spec val" id="val-find_idx"><a href="#val-find_idx" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>find_idx : (<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> bool) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> (int<span class="keyword"> * </span><span class="type-var">'a</span>) option</code></div><div class="doc"><p><code class="code">find_idx p x</code> returns <code class="code">Some (i,x)</code> where <code class="code">x</code> is the <code class="code">i</code>-th element of <code class="code">l</code>,
and <code class="code">p x</code> holds. Otherwise returns <code class="code">None</code>.</p></div></div><div class="spec val" id="val-remove"><a href="#val-remove" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>remove : eq:(<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> bool) <span class="keyword">&#8209;&gt;</span> x:<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p><code class="code">remove ~x l</code> removes every instance of <code class="code">x</code> from <code class="code">l</code>. Tail-recursive.</p><ul class="at-tag"><li><span class="at-tag parameter">Parameter</span> <span class="module-path">eq</span>: equality function.</li><li><span class="at-tag since">Since</span>: 0.11</li></ul></div></div><div class="spec val" id="val-filter_map"><a href="#val-filter_map" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>filter_map : (<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> option) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p><code class="code">filter_map f l</code> is the sublist of <code class="code">l</code> containing only elements for which
<code class="code">f</code> returns <code class="code">Some e</code>.
Map and remove elements at the same time.</p></div></div><div class="spec val" id="val-keep_some"><a href="#val-keep_some" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>keep_some : <span class="type-var">'a</span> option <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p><code class="code">keep_some l</code> retains only elements of the form <code class="code">Some x</code>.
Like <code class="code">filter_map CCFun.id</code>.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 1.3</li></ul></div></div><div class="spec val" id="val-keep_ok"><a href="#val-keep_ok" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>keep_ok : (<span class="type-var">'a</span>, <span class="type-var">_</span>) Result.result <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p><code class="code">keep_ok l</code> retains only elements of the form <code class="code">Ok x</code>.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 1.3</li></ul></div></div><div class="spec val" id="val-all_some"><a href="#val-all_some" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>all_some : <span class="type-var">'a</span> option <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> option</code></div><div class="doc"><p><code class="code">all_some l</code> returns <code class="code">Some l'</code> if all elements of <code class="code">l</code> are of the form <code class="code">Some x</code>,
or <code class="code">None</code> otherwise.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 1.3</li></ul></div></div><div class="spec val" id="val-all_ok"><a href="#val-all_ok" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>all_ok : (<span class="type-var">'a</span>, <span class="type-var">'err</span>) Result.result <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> (<span class="type-var">'a</span> <a href="index.html#type-t">t</a>, <span class="type-var">'err</span>) Result.result</code></div><div class="doc"><p><code class="code">all_ok l</code> returns <code class="code">Ok l'</code> if all elements of <code class="code">l</code> are of the form <code class="code">Ok x</code>,
or <code class="code">Error e</code> otherwise (with the first error met).</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 1.3</li></ul></div></div><div class="spec val" id="val-sorted_merge"><a href="#val-sorted_merge" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>sorted_merge : cmp:(<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> int) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list</code></div><div class="doc"><p>Merge elements from both sorted list.</p></div></div><div class="spec val" id="val-sort_uniq"><a href="#val-sort_uniq" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>sort_uniq : cmp:(<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> int) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list</code></div><div class="doc"><p>Sort the list and remove duplicate elements.</p></div></div><div class="spec val" id="val-sorted_merge_uniq"><a href="#val-sorted_merge_uniq" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>sorted_merge_uniq : cmp:(<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> int) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list</code></div><div class="doc"><p><code class="code">sorted_merge_uniq l1 l2</code> merges the sorted lists <code class="code">l1</code> and <code class="code">l2</code> and
removes duplicates.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.10</li></ul></div></div><div class="spec val" id="val-is_sorted"><a href="#val-is_sorted" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>is_sorted : cmp:(<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> int) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list <span class="keyword">&#8209;&gt;</span> bool</code></div><div class="doc"><p><code class="code">is_sorted l</code> returns <code class="code">true</code> iff <code class="code">l</code> is sorted (according to given order).</p><ul class="at-tag"><li><span class="at-tag parameter">Parameter</span> <span class="module-path">cmp</span>: the comparison function (default <code class="code">Pervasives.compare</code>).</li><li><span class="at-tag since">Since</span>: 0.17</li></ul></div></div><div class="spec val" id="val-sorted_insert"><a href="#val-sorted_insert" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>sorted_insert : cmp:(<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> int) <span class="keyword">&#8209;&gt;</span> ?&#8288;uniq:bool <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list</code></div><div class="doc"><p><code class="code">sorted_insert x l</code> inserts <code class="code">x</code> into <code class="code">l</code> such that, if <code class="code">l</code> was sorted,
then <code class="code">sorted_insert x l</code> is sorted too.</p><ul class="at-tag"><li><span class="at-tag parameter">Parameter</span> <span class="module-path">uniq</span>: if true and <code class="code">x</code> is already in sorted position in <code class="code">l</code>, then
<code class="code">x</code> is not duplicated. Default <code class="code">false</code> (<code class="code">x</code> will be inserted in any case).</li><li><span class="at-tag since">Since</span>: 0.17</li></ul></div></div><div class="spec val" id="val-uniq_succ"><a href="#val-uniq_succ" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>uniq_succ : eq:(<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> bool) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list</code></div><div class="doc"><p><code class="code">uniq_succ l</code> removes duplicate elements that occur one next to the other.
Examples:
<code class="code">uniq_succ [1;2;1] = [1;2;1]</code>.
<code class="code">uniq_succ [1;1;2] = [1;2]</code>.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.10</li></ul></div></div><div class="spec val" id="val-group_succ"><a href="#val-group_succ" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>group_succ : eq:(<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> bool) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> list list</code></div><div class="doc"><p><code class="code">group_succ ~eq l</code> groups together consecutive elements that are equal
according to <code class="code">eq</code>.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.11</li></ul></div></div><h3>Indices</h3><div class="spec val" id="val-mapi"><a href="#val-mapi" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>mapi : (int <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span>) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Like <a href="index.html#val-map">map</a>, but the function is applied to the index of
the element as first argument (counting from 0), and the element
itself as second argument.</p></div></div><div class="spec val" id="val-iteri"><a href="#val-iteri" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>iteri : (int <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> unit) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> unit</code></div><div class="doc"><p>Like <a href="index.html#val-iter">iter</a>, but the function is applied to the index of
the element as first argument (counting from 0), and the element
itself as second argument.</p></div></div><div class="spec val" id="val-iteri2"><a href="#val-iteri2" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>iteri2 : (int <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> <span class="keyword">&#8209;&gt;</span> unit) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> unit</code></div><div class="doc"><p>Iter on two lists.</p><ul class="at-tag"><li><span class="at-tag raise">Raises</span> <span class="module-path">Invalid_argument</span>: when lists do not have the same length.</li><li><span class="at-tag since">Since</span>: 2.0</li></ul></div></div><div class="spec val" id="val-foldi"><a href="#val-foldi" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>foldi : (<span class="type-var">'b</span> <span class="keyword">&#8209;&gt;</span> int <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span>) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span></code></div><div class="doc"><p>Like <code class="code">fold</code> but it also passes in the index of each element to the folded function. Tail-recursive.</p></div></div><div class="spec val" id="val-foldi2"><a href="#val-foldi2" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>foldi2 : (<span class="type-var">'c</span> <span class="keyword">&#8209;&gt;</span> int <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'c</span>) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'c</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'c</span></code></div><div class="doc"><p>Fold on two lists, with index.</p><ul class="at-tag"><li><span class="at-tag raise">Raises</span> <span class="module-path">Invalid_argument</span>: when lists do not have the same length.</li><li><span class="at-tag since">Since</span>: 2.0</li></ul></div></div><div class="spec val" id="val-get_at_idx"><a href="#val-get_at_idx" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>get_at_idx : int <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> option</code></div><div class="doc"><p>Get by index in the list.
If the index is negative, it will get element starting from the end
of the list.</p></div></div><div class="spec val" id="val-nth_opt"><a href="#val-nth_opt" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>nth_opt : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> int <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> option</code></div><div class="doc"><p>Safe version of <a href="index.html#val-nth">nth</a>.</p><ul class="at-tag"><li><span class="at-tag raise">Raises</span> <span class="module-path">Invalid_argument</span>: if the int is negative.</li><li><span class="at-tag since">Since</span>: 1.5</li></ul></div></div><div class="spec val" id="val-get_at_idx_exn"><a href="#val-get_at_idx_exn" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>get_at_idx_exn : int <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span></code></div><div class="doc"><p>Get the i-th element, or</p><ul class="at-tag"><li><span class="at-tag raise">Raises</span> <span class="module-path">Not_found</span>: if the index is invalid.
If the index is negative, it will get element starting from the end
of the list.</li></ul></div></div><div class="spec val" id="val-set_at_idx"><a href="#val-set_at_idx" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>set_at_idx : int <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Set i-th element (removes the old one), or does nothing if
index is too high.
If the index is negative, it will set element starting from the end
of the list.</p></div></div><div class="spec val" id="val-insert_at_idx"><a href="#val-insert_at_idx" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>insert_at_idx : int <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Insert at i-th position, between the two existing elements. If the
index is too high, append at the end of the list.
If the index is negative, it will insert element starting from the end
of the list.</p></div></div><div class="spec val" id="val-remove_at_idx"><a href="#val-remove_at_idx" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>remove_at_idx : int <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Remove element at given index. Does nothing if the index is
too high.
If the index is negative, it will remove element starting from the end
of the list.</p></div></div><h3>Set Operators</h3><p>Those operations maintain the invariant that the list does not
contain duplicates (if it already satisfies it).</p><div class="spec val" id="val-add_nodup"><a href="#val-add_nodup" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>add_nodup : eq:(<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> bool) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p><code class="code">add_nodup x set</code> adds <code class="code">x</code> to <code class="code">set</code> if it was not already present. Linear time.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.11</li></ul></div></div><div class="spec val" id="val-remove_one"><a href="#val-remove_one" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>remove_one : eq:(<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> bool) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p><code class="code">remove_one x set</code> removes one occurrence of <code class="code">x</code> from <code class="code">set</code>. Linear time.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.11</li></ul></div></div><div class="spec val" id="val-mem"><a href="#val-mem" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>mem : eq:(<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> bool) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> bool</code></div><div class="doc"><p>Membership to the list. Linear time.</p></div></div><div class="spec val" id="val-subset"><a href="#val-subset" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>subset : eq:(<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> bool) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> bool</code></div><div class="doc"><p>Test for inclusion.</p></div></div><div class="spec val" id="val-uniq"><a href="#val-uniq" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>uniq : eq:(<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> bool) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Remove duplicates w.r.t the equality predicate.
Complexity is quadratic in the length of the list, but the order
of elements is preserved. If you wish for a faster de-duplication
but do not care about the order, use <a href="index.html#val-sort_uniq">sort_uniq</a>.</p></div></div><div class="spec val" id="val-union"><a href="#val-union" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>union : eq:(<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> bool) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>List union. Complexity is product of length of inputs.</p></div></div><div class="spec val" id="val-inter"><a href="#val-inter" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>inter : eq:(<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> bool) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>List intersection. Complexity is product of length of inputs.</p></div></div><h3>Other Constructors</h3><div class="spec val" id="val-range_by"><a href="#val-range_by" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>range_by : step:int <span class="keyword">&#8209;&gt;</span> int <span class="keyword">&#8209;&gt;</span> int <span class="keyword">&#8209;&gt;</span> int <a href="index.html#type-t">t</a></code></div><div class="doc"><p><code class="code">range_by ~step i j</code> iterates on integers from <code class="code">i</code> to <code class="code">j</code> included,
where the difference between successive elements is <code class="code">step</code>.
Use a negative <code class="code">step</code> for a decreasing list.</p><ul class="at-tag"><li><span class="at-tag raise">Raises</span> <span class="module-path">Invalid_argument</span>: if <code class="code">step=0</code>.</li><li><span class="at-tag since">Since</span>: 0.18</li></ul></div></div><div class="spec val" id="val-range"><a href="#val-range" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>range : int <span class="keyword">&#8209;&gt;</span> int <span class="keyword">&#8209;&gt;</span> int <a href="index.html#type-t">t</a></code></div><div class="doc"><p><code class="code">range i j</code> iterates on integers from <code class="code">i</code> to <code class="code">j</code> included. It works
both for decreasing and increasing ranges.</p></div></div><div class="spec val" id="val-range'"><a href="#val-range'" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>range' : int <span class="keyword">&#8209;&gt;</span> int <span class="keyword">&#8209;&gt;</span> int <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Like <a href="index.html#val-range">range</a> but the second bound is excluded.
For instance <code class="code">range' 0 5 = [0;1;2;3;4]</code>.</p></div></div><div class="spec val" id="val-(--)"><a href="#val-(--)" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>(--) : int <span class="keyword">&#8209;&gt;</span> int <span class="keyword">&#8209;&gt;</span> int <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Infix alias for <code class="code">range</code>.</p></div></div><div class="spec val" id="val-(--^)"><a href="#val-(--^)" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>(--^) : int <span class="keyword">&#8209;&gt;</span> int <span class="keyword">&#8209;&gt;</span> int <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Infix alias for <code class="code">range'</code>.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.17</li></ul></div></div><div class="spec val" id="val-replicate"><a href="#val-replicate" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>replicate : int <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Replicate the given element <code class="code">n</code> times.</p></div></div><div class="spec val" id="val-repeat"><a href="#val-repeat" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>repeat : int <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Concatenate the list with itself <code class="code">n</code> times.</p></div></div><h3>Association Lists</h3><div class="spec module" id="module-Assoc"><a href="#module-Assoc" class="anchor"></a><div class="def module"><code><span class="keyword">module </span><a href="Assoc/index.html">Assoc</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="doc"></div></div><div class="spec val" id="val-assoc"><a href="#val-assoc" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>assoc : eq:(<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> bool) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> (<span class="type-var">'a</span><span class="keyword"> * </span><span class="type-var">'b</span>) <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span></code></div><div class="doc"><p>Like <code class="code">Assoc.get_exn</code>.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 2.0</li></ul></div></div><div class="spec val" id="val-assoc_opt"><a href="#val-assoc_opt" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>assoc_opt : eq:(<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> bool) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> (<span class="type-var">'a</span><span class="keyword"> * </span><span class="type-var">'b</span>) <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> option</code></div><div class="doc"><p>Like <code class="code">Assoc.get</code>.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 1.5</li></ul></div></div><div class="spec val" id="val-assq_opt"><a href="#val-assq_opt" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>assq_opt : <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> (<span class="type-var">'a</span><span class="keyword"> * </span><span class="type-var">'b</span>) <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'b</span> option</code></div><div class="doc"><p>Safe version of <a href="index.html#val-assq">assq</a>.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 1.5</li></ul></div></div><div class="spec val" id="val-mem_assoc"><a href="#val-mem_assoc" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>mem_assoc : eq:(<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> bool) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> (<span class="type-var">'a</span><span class="keyword"> * </span><span class="type-var">_</span>) <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> bool</code></div><div class="doc"><p>Like <code class="code">Assoc.mem</code>.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 2.0</li></ul></div></div><div class="spec val" id="val-remove_assoc"><a href="#val-remove_assoc" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>remove_assoc : eq:(<span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> bool) <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <span class="keyword">&#8209;&gt;</span> (<span class="type-var">'a</span><span class="keyword"> * </span><span class="type-var">'b</span>) <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> (<span class="type-var">'a</span><span class="keyword"> * </span><span class="type-var">'b</span>) <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Like <code class="code">Assoc.remove</code>.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 2.0</li></ul></div></div><h3>References on Lists</h3><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.3.3</li></ul><div class="spec module" id="module-Ref"><a href="#module-Ref" class="anchor"></a><div class="def module"><code><span class="keyword">module </span><a href="Ref/index.html">Ref</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="doc"></div></div><div class="spec module-type" id="module-type-MONAD"><a href="#module-type-MONAD" class="anchor"></a><div class="def module-type"><code><span class="keyword">module type </span><a href="module-type-MONAD/index.html">MONAD</a> : <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="doc"><h3>Monadic Operations</h3></div></div><div class="spec module" id="module-Traverse"><a href="#module-Traverse" class="anchor"></a><div class="def module"><code><span class="keyword">module </span><a href="Traverse/index.html">Traverse</a> : <span class="keyword">functor</span> (<a href="Traverse/argument-1-M/index.html">M</a> : <a href="index.html#module-type-MONAD">MONAD</a>) -&gt; <span class="keyword">sig</span> ... <span class="keyword">end</span></code></div><div class="doc"></div></div><h3>Conversions</h3><div class="spec val" id="val-random"><a href="#val-random" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>random : <span class="type-var">'a</span> <a href="index.html#type-random_gen">random_gen</a> <span class="keyword">&#8209;&gt;</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></div><div class="doc"></div></div><div class="spec val" id="val-random_non_empty"><a href="#val-random_non_empty" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>random_non_empty : <span class="type-var">'a</span> <a href="index.html#type-random_gen">random_gen</a> <span class="keyword">&#8209;&gt;</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></div><div class="doc"></div></div><div class="spec val" id="val-random_len"><a href="#val-random_len" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>random_len : int <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-random_gen">random_gen</a> <span class="keyword">&#8209;&gt;</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></div><div class="doc"></div></div><div class="spec val" id="val-random_choose"><a href="#val-random_choose" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>random_choose : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-random_gen">random_gen</a></code></div><div class="doc"><p>Randomly choose an element in the list.</p><ul class="at-tag"><li><span class="at-tag raise">Raises</span> <span class="module-path">Not_found</span>: if the list is empty.</li></ul></div></div><div class="spec val" id="val-random_sequence"><a href="#val-random_sequence" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>random_sequence : <span class="type-var">'a</span> <a href="index.html#type-random_gen">random_gen</a> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</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></div><div class="doc"></div></div><div class="spec val" id="val-to_seq"><a href="#val-to_seq" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>to_seq : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-sequence">sequence</a></code></div><div class="doc"><p>Return a <code class="code">sequence</code> of the elements of the list.</p></div></div><div class="spec val" id="val-of_seq"><a href="#val-of_seq" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>of_seq : <span class="type-var">'a</span> <a href="index.html#type-sequence">sequence</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Build a list from a given <code class="code">sequence</code>.
In the result, elements appear in the same order as they did in the source <code class="code">sequence</code>.</p></div></div><div class="spec val" id="val-to_gen"><a href="#val-to_gen" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>to_gen : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-gen">gen</a></code></div><div class="doc"><p>Return a <code class="code">gen</code> of the elements of the list.</p></div></div><div class="spec val" id="val-of_gen"><a href="#val-of_gen" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>of_gen : <span class="type-var">'a</span> <a href="index.html#type-gen">gen</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Build a list from a given <code class="code">gen</code>.
In the result, elements appear in the same order as they did in the source <code class="code">gen</code>.</p></div></div><div class="spec val" id="val-to_klist"><a href="#val-to_klist" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>to_klist : <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-klist">klist</a></code></div><div class="doc"><p>Return a <code class="code">klist</code> of the elements of the list.</p></div></div><div class="spec val" id="val-of_klist"><a href="#val-of_klist" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>of_klist : <span class="type-var">'a</span> <a href="index.html#type-klist">klist</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a></code></div><div class="doc"><p>Build a list from a given <code class="code">klist</code>.
In the result, elements appear in the same order as they did in the source <code class="code">klist</code>.</p></div></div><h3>Infix Operators</h3><p>
It is convenient to <span class="xref-unresolved" title="unresolved reference to &quot;open CCList.Infix&quot;">open CCList.Infix</span> to access the infix operators
without cluttering the scope too much.</p><ul class="at-tag"><li><span class="at-tag since">Since</span>: 0.16</li></ul><div class="spec module" id="module-Infix"><a href="#module-Infix" class="anchor"></a><div class="def module"><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 class="doc"></div></div><h3>IO</h3><div class="spec val" id="val-pp"><a href="#val-pp" class="anchor"></a><div class="def val"><code><span class="keyword">val </span>pp : ?&#8288;start:string <span class="keyword">&#8209;&gt;</span> ?&#8288;stop:string <span class="keyword">&#8209;&gt;</span> ?&#8288;sep:string <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-printer">printer</a> <span class="keyword">&#8209;&gt;</span> <span class="type-var">'a</span> <a href="index.html#type-t">t</a> <a href="index.html#type-printer">printer</a></code></div><div class="doc"><p>Print the contents of a list.</p></div></div></body></html>