diff --git a/3.2/containers-data/CCBV/.dune-keep b/3.2/containers-data/CCBV/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers-data/CCBV/index.html b/3.2/containers-data/CCBV/index.html
new file mode 100644
index 00000000..4b5495d3
--- /dev/null
+++ b/3.2/containers-data/CCBV/index.html
@@ -0,0 +1,2 @@
+
+
CCBV (containers-data.CCBV)
Module CCBV
Imperative Bitvectors
BREAKING CHANGES since 1.2: size is now stored along with the bitvector. Some functions have a new signature.
The size of the bitvector used to be rounded up to the multiple of 30 or 62. In other words some functions such as iter would iterate on more bits than what was originally asked for. This is not the case anymore.
select arr bv selects the elements of arr whose index corresponds to a true bit in bv. If bv is too short, elements of arr with too high an index cannot be selected and are therefore not selected.
\ No newline at end of file
diff --git a/3.2/containers-data/CCBijection/.dune-keep b/3.2/containers-data/CCBijection/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers-data/CCBijection/Make/argument-1-L/index.html b/3.2/containers-data/CCBijection/Make/argument-1-L/index.html
new file mode 100644
index 00000000..05938053
--- /dev/null
+++ b/3.2/containers-data/CCBijection/Make/argument-1-L/index.html
@@ -0,0 +1,2 @@
+
+1-L (containers-data.CCBijection.Make.1-L)
\ No newline at end of file
diff --git a/3.2/containers-data/CCBijection/Make/argument-2-R/index.html b/3.2/containers-data/CCBijection/Make/argument-2-R/index.html
new file mode 100644
index 00000000..76386674
--- /dev/null
+++ b/3.2/containers-data/CCBijection/Make/argument-2-R/index.html
@@ -0,0 +1,2 @@
+
+2-R (containers-data.CCBijection.Make.2-R)
\ No newline at end of file
diff --git a/3.2/containers-data/CCBijection/Make/index.html b/3.2/containers-data/CCBijection/Make/index.html
new file mode 100644
index 00000000..d3389223
--- /dev/null
+++ b/3.2/containers-data/CCBijection/Make/index.html
@@ -0,0 +1,2 @@
+
+Make (containers-data.CCBijection.Make)
\ No newline at end of file
diff --git a/3.2/containers-data/CCBijection/index.html b/3.2/containers-data/CCBijection/index.html
new file mode 100644
index 00000000..ea209f5a
--- /dev/null
+++ b/3.2/containers-data/CCBijection/index.html
@@ -0,0 +1,2 @@
+
+CCBijection (containers-data.CCBijection)
Module CCBijection
Bijection
Represents 1-to-1 mappings between two types. Each element from the "left" is mapped to one "right" value, and conversely.
\ No newline at end of file
diff --git a/3.2/containers-data/CCBijection/module-type-OrderedType/index.html b/3.2/containers-data/CCBijection/module-type-OrderedType/index.html
new file mode 100644
index 00000000..2cb788bb
--- /dev/null
+++ b/3.2/containers-data/CCBijection/module-type-OrderedType/index.html
@@ -0,0 +1,2 @@
+
+OrderedType (containers-data.CCBijection.OrderedType)
\ No newline at end of file
diff --git a/3.2/containers-data/CCBijection/module-type-S/index.html b/3.2/containers-data/CCBijection/module-type-S/index.html
new file mode 100644
index 00000000..ba113e13
--- /dev/null
+++ b/3.2/containers-data/CCBijection/module-type-S/index.html
@@ -0,0 +1,2 @@
+
+S (containers-data.CCBijection.S)
\ No newline at end of file
diff --git a/3.2/containers-data/CCBitField/.dune-keep b/3.2/containers-data/CCBitField/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers-data/CCBitField/Make/argument-1-_/index.html b/3.2/containers-data/CCBitField/Make/argument-1-_/index.html
new file mode 100644
index 00000000..454bf062
--- /dev/null
+++ b/3.2/containers-data/CCBitField/Make/argument-1-_/index.html
@@ -0,0 +1,2 @@
+
+1-_ (containers-data.CCBitField.Make.1-_)
Parameter Make.1-_
\ No newline at end of file
diff --git a/3.2/containers-data/CCBitField/Make/index.html b/3.2/containers-data/CCBitField/Make/index.html
new file mode 100644
index 00000000..c00b2685
--- /dev/null
+++ b/3.2/containers-data/CCBitField/Make/index.html
@@ -0,0 +1,2 @@
+
+Make (containers-data.CCBitField.Make)
Prevent new fields from being added. From now on, creating a field will raise Frozen.
val total_width : unit -> int
Current width of the bitfield.
\ No newline at end of file
diff --git a/3.2/containers-data/CCBitField/index.html b/3.2/containers-data/CCBitField/index.html
new file mode 100644
index 00000000..d6b89006
--- /dev/null
+++ b/3.2/containers-data/CCBitField/index.html
@@ -0,0 +1,12 @@
+
+CCBitField (containers-data.CCBitField)
Module CCBitField
Bit Field
This module defines efficient bitfields up to 30 or 62 bits (depending on the architecture) in a relatively type-safe way.
module B = CCBitField.Make(struct end);;
+
+let x = B.mk_field ()
+let y = B.mk_field ()
+let z = B.mk_field ()
+
+let f = B.empty |> B.set x true |> B.set y true;;
+
+assert (not (B.get z f)) ;;
+
+assert (f |> B.set z true |> B.get z);;
exceptionTooManyFields
Raised when too many fields are packed into one bitfield.
exceptionFrozen
Raised when a frozen bitfield is modified.
val max_width : int
System-dependent maximum width for a bitfield, typically 30 or 62.
\ No newline at end of file
diff --git a/3.2/containers-data/CCBitField/module-type-S/index.html b/3.2/containers-data/CCBitField/module-type-S/index.html
new file mode 100644
index 00000000..74b1e702
--- /dev/null
+++ b/3.2/containers-data/CCBitField/module-type-S/index.html
@@ -0,0 +1,2 @@
+
+S (containers-data.CCBitField.S)
Module type CCBitField.S
Bitfield Signature
type t = private int
Generative type of bitfields. Each instantiation of the functor should create a new, incompatible type
Prevent new fields from being added. From now on, creating a field will raise Frozen.
val total_width : unit -> int
Current width of the bitfield.
\ No newline at end of file
diff --git a/3.2/containers-data/CCCache/.dune-keep b/3.2/containers-data/CCCache/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers-data/CCCache/index.html b/3.2/containers-data/CCCache/index.html
new file mode 100644
index 00000000..a18aab2b
--- /dev/null
+++ b/3.2/containers-data/CCCache/index.html
@@ -0,0 +1,15 @@
+
+CCCache (containers-data.CCCache)
Typical use case: one wants to memoize a function f : 'a -> 'b. Code sample:
let f x =
+ print_endline "call f";
+ x + 1;;
+
+let f' = with_cache (lru 256) f;;
+f' 0;; (* prints *)
+f' 1;; (* prints *)
+f' 0;; (* doesn't print, returns cached value *)
type('a, 'b) callback = in_cache:bool->'a->'b-> unit
Type of the callback that is called once a cached value is found or not. Should never raise.
parameter in_cache
is true if the value was in cache, false if the value was just produced.
since
1.3
val with_cache : ?cb:('a, 'b)callback->('a, 'b)t->('a->'b)->'a->'b
with_cache c f behaves like f, but caches calls to f in the cache c. It always returns the same value as f x, if f x returns, or raise the same exception. However, f may not be called if x is in the cache.
parameter cb
called after the value is generated or retrieved.
val with_cache_rec : ?cb:('a, 'b)callback->('a, 'b)t->(('a->'b)->'a->'b)->'a->'b
with_cache_rec c f is a function that first, applies f to some f' = fix f, such that recursive calls to f' are cached in c. It is similar to with_cache but with a function that takes as first argument its own recursive version. Example (memoized Fibonacci function):
let fib = with_cache_rec (lru 256)
+ (fun fib' n -> match n with
+ | 1 | 2 -> 1
+ | _ -> fib' (n-1) + fib' (n-2)
+ );;
+
+fib 70;;
Linear cache with the given size. It stores key/value pairs in an array and does linear search at every call, so it should only be used with small size.
parameter eq
optional equality predicate for keys.
val replacing : eq:'aequal->?hash:'ahash-> int ->('a, 'b)t
Replacing cache of the given size. Equality and hash functions can be parametrized. It's a hash table that handles collisions by replacing the old value with the new (so a cache entry is evicted when another entry with the same hash (modulo size) is added). Never grows wider than the given size.
val lru : eq:'aequal->?hash:'ahash-> int ->('a, 'b)t
LRU cache of the given size ("Least Recently Used": keys that have not been used recently are deleted first). Never grows wider than the given size.
val unbounded : eq:'aequal->?hash:'ahash-> int ->('a, 'b)t
Unbounded cache, backed by a Hash table. Will grow forever unless clear is called manually.
\ No newline at end of file
diff --git a/3.2/containers-data/CCDeque/.dune-keep b/3.2/containers-data/CCDeque/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers-data/CCDeque/index.html b/3.2/containers-data/CCDeque/index.html
new file mode 100644
index 00000000..3dd7820b
--- /dev/null
+++ b/3.2/containers-data/CCDeque/index.html
@@ -0,0 +1,2 @@
+
+CCDeque (containers-data.CCDeque)
Module CCDeque
Imperative deque
This structure provides fast access to its front and back elements, with O(1) operations.
Update last value. If the deque is empty do nothing. If the function returns None, remove last element; if it returns Some x, replace last element with x.
\ No newline at end of file
diff --git a/3.2/containers-data/CCFQueue/.dune-keep b/3.2/containers-data/CCFQueue/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers-data/CCFQueue/index.html b/3.2/containers-data/CCFQueue/index.html
new file mode 100644
index 00000000..d0f5d62d
--- /dev/null
+++ b/3.2/containers-data/CCFQueue/index.html
@@ -0,0 +1,2 @@
+
+CCFQueue (containers-data.CCFQueue)
Module CCFQueue
Functional queues
type'a iter = ('a-> unit)-> unit
type'a equal = 'a->'a-> bool
type'a printer = Stdlib.Format.formatter ->'a-> unit
take_back_l n q removes and returns the last n elements of q. The elements are in the order of the queue, that is, the head of the returned list is the first element to appear via take_front. take_back_l 2 (of_list [1;2;3;4]) = of_list [1;2], [3;4].
raises Invalid_argument
if n<0.
val take_back_while : ('a-> bool)->'at->'at * 'a list
\ No newline at end of file
diff --git a/3.2/containers-data/CCFun_vec/.dune-keep b/3.2/containers-data/CCFun_vec/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers-data/CCFun_vec/index.html b/3.2/containers-data/CCFun_vec/index.html
new file mode 100644
index 00000000..a2063f60
--- /dev/null
+++ b/3.2/containers-data/CCFun_vec/index.html
@@ -0,0 +1,2 @@
+
+CCFun_vec (containers-data.CCFun_vec)
Module CCFun_vec
Functional Vectors
type'a iter = ('a-> unit)-> unit
type'a gen = unit ->'a option
type'a printer = Stdlib.Format.formatter ->'a-> unit
type'a ktree = unit ->[ `Nil | `Node of 'a * 'aktree list ]
\ No newline at end of file
diff --git a/3.2/containers-data/CCGraph/.dune-keep b/3.2/containers-data/CCGraph/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers-data/CCGraph/Dot/index.html b/3.2/containers-data/CCGraph/Dot/index.html
new file mode 100644
index 00000000..b6ce2561
--- /dev/null
+++ b/3.2/containers-data/CCGraph/Dot/index.html
@@ -0,0 +1,2 @@
+
+Dot (containers-data.CCGraph.Dot)
Module CCGraph.Dot
type attribute = [
| `Color of string
| `Shape of string
| `Weight of int
| `Style of string
| `Label of string
| `Other of string * string
]
Dot attribute
type vertex_state
Hidden state associated to a vertex
val pp : tbl:('v, vertex_state)table->eq:('v->'v-> bool)->?attrs_v:('v->attribute list)->?attrs_e:('e->attribute list)->?name:string->graph:('v, 'e)t-> Stdlib.Format.formatter ->'v-> unit
Print the graph, starting from given vertex, on the formatter.
parameter attrs_v
attributes for vertices.
parameter attrs_e
attributes for edges.
parameter name
name of the graph.
val pp_all : tbl:('v, vertex_state)table->eq:('v->'v-> bool)->?attrs_v:('v->attribute list)->?attrs_e:('e->attribute list)->?name:string->graph:('v, 'e)t-> Stdlib.Format.formatter ->'viter-> unit
Same as pp but starting from several vertices, not just one.
since
2.8
val with_out : string ->(Stdlib.Format.formatter ->'a)->'a
Shortcut to open a file and write to it.
\ No newline at end of file
diff --git a/3.2/containers-data/CCGraph/Iter/index.html b/3.2/containers-data/CCGraph/Iter/index.html
new file mode 100644
index 00000000..39b1a8f1
--- /dev/null
+++ b/3.2/containers-data/CCGraph/Iter/index.html
@@ -0,0 +1,2 @@
+
+Iter (containers-data.CCGraph.Iter)
\ No newline at end of file
diff --git a/3.2/containers-data/CCGraph/Lazy_tree/index.html b/3.2/containers-data/CCGraph/Lazy_tree/index.html
new file mode 100644
index 00000000..e96c4021
--- /dev/null
+++ b/3.2/containers-data/CCGraph/Lazy_tree/index.html
@@ -0,0 +1,2 @@
+
+Lazy_tree (containers-data.CCGraph.Lazy_tree)
val fold_v : ('acc->'v->'acc)->'acc->('v, _)t->'acc
\ No newline at end of file
diff --git a/3.2/containers-data/CCGraph/Map/index.html b/3.2/containers-data/CCGraph/Map/index.html
new file mode 100644
index 00000000..39adcf52
--- /dev/null
+++ b/3.2/containers-data/CCGraph/Map/index.html
@@ -0,0 +1,2 @@
+
+Map (containers-data.CCGraph.Map)
\ No newline at end of file
diff --git a/3.2/containers-data/CCGraph/Traverse/Event/index.html b/3.2/containers-data/CCGraph/Traverse/Event/index.html
new file mode 100644
index 00000000..a7bab0ca
--- /dev/null
+++ b/3.2/containers-data/CCGraph/Traverse/Event/index.html
@@ -0,0 +1,2 @@
+
+Event (containers-data.CCGraph.Traverse.Event)
\ No newline at end of file
diff --git a/3.2/containers-data/CCGraph/Traverse/index.html b/3.2/containers-data/CCGraph/Traverse/index.html
new file mode 100644
index 00000000..ab7fee23
--- /dev/null
+++ b/3.2/containers-data/CCGraph/Traverse/index.html
@@ -0,0 +1,2 @@
+
+Traverse (containers-data.CCGraph.Traverse)
Traversal of the given graph, starting from a sequence of vertices, using the given bag to choose the next vertex to explore. Each vertex is visited at most once.
val dijkstra : tbl:'vset->?dist:('e-> int)->graph:('v, 'e)t->'viter->('v * int * ('v, 'e)path)iter_once
Dijkstra algorithm, traverses a graph in increasing distance order. Yields each vertex paired with its distance to the set of initial vertices (the smallest distance needed to reach the node from the initial vertices).
parameter dist
distance from origin of the edge to destination, must be strictly positive. Default is 1 for every edge.
val dijkstra_tag : ?dist:('e-> int)->tags:'vtag_set->graph:('v, 'e)t->'viter->('v * int * ('v, 'e)path)iter_once
\ No newline at end of file
diff --git a/3.2/containers-data/CCGraph/index.html b/3.2/containers-data/CCGraph/index.html
new file mode 100644
index 00000000..4d12da62
--- /dev/null
+++ b/3.2/containers-data/CCGraph/index.html
@@ -0,0 +1,7 @@
+
+CCGraph (containers-data.CCGraph)
Module CCGraph
Simple Graph Interface
A collections of algorithms on (mostly read-only) graph structures. The user provides her own graph structure as a ('v, 'e) CCGraph.t, where 'v is the type of vertices and 'e the type of edges (for instance, 'e = ('v * 'v) is perfectly fine in many cases).
Such a ('v, 'e) CCGraph.t structure is a record containing three functions: two relate edges to their origin and destination, and one maps vertices to their outgoing edges. This abstract notion of graph makes it possible to run the algorithms on any user-specific type that happens to have a graph structure.
Many graph algorithms here take an iterator of vertices as input. The helper module Iter contains basic functions for that, as does the iter library on opam. If the user only has a single vertex (e.g., for a topological sort from a given vertex), they can use Iter.return x to build a iter of one element.
val is_dag : tbl:'vset->eq:('v->'v-> bool)->graph:('v, _)t->'viter-> bool
is_dag ~graph vs returns true if the subset of graph reachable from vs is acyclic.
since
0.18
Topological Sort
exceptionHas_cycle
val topo_sort : eq:('v->'v-> bool)->?rev:bool->tbl:'vset->graph:('v, 'e)t->'viter->'v list
topo_sort ~graph seq returns a list of vertices l where each element of l is reachable from seq. The list is sorted in a way such that if v -> v' in the graph, then v comes before v' in the list (i.e. has a smaller index). Basically v -> v' means that v is smaller than v'. See wikipedia.
parameter eq
equality predicate on vertices (default (=)).
parameter rev
if true, the dependency relation is inverted (v -> v' means v' occurs before v).
raises Has_cycle
if the graph is not a DAG.
val topo_sort_tag : eq:('v->'v-> bool)->?rev:bool->tags:'vtag_set->graph:('v, 'e)t->'viter->'v list
Strongly connected components reachable from the given vertices. Each component is a list of vertices that are all mutually reachable in the graph. The components are explored in a topological order (if C1 and C2 are components, and C1 points to C2, then C2 will be yielded before C1). Uses Tarjan's algorithm.
parameter tbl
table used to map nodes to some hidden state.
raises Iter_once
if the result is iterated on more than once.
Pretty printing in the DOT (graphviz) format
Example (print divisors from 42):
let open CCGraph in
+let open Dot in
+with_out "/tmp/truc.dot"
+ (fun out ->
+ pp ~attrs_v:(fun i -> [`Label (string_of_int i)]) ~graph:divisors_graph out 42
+ )
val mk_mut_tbl : eq:('v->'v-> bool)->?hash:('v-> int)-> int ->('v, 'a)mut_graph
Make a new mutable graph from a Hashtbl. Edges are labelled with type 'a.
Immutable Graph
A classic implementation of a graph structure on totally ordered vertices, with unlabelled edges. The graph allows to add and remove edges and vertices, and to iterate on edges and vertices.
\ No newline at end of file
diff --git a/3.2/containers-data/CCGraph/module-type-MAP/index.html b/3.2/containers-data/CCGraph/module-type-MAP/index.html
new file mode 100644
index 00000000..0b1d4e7a
--- /dev/null
+++ b/3.2/containers-data/CCGraph/module-type-MAP/index.html
@@ -0,0 +1,2 @@
+
+MAP (containers-data.CCGraph.MAP)
\ No newline at end of file
diff --git a/3.2/containers-data/CCHashSet/.dune-keep b/3.2/containers-data/CCHashSet/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers-data/CCHashSet/Make/argument-1-E/index.html b/3.2/containers-data/CCHashSet/Make/argument-1-E/index.html
new file mode 100644
index 00000000..2c8eb138
--- /dev/null
+++ b/3.2/containers-data/CCHashSet/Make/argument-1-E/index.html
@@ -0,0 +1,2 @@
+
+1-E (containers-data.CCHashSet.Make.1-E)
\ No newline at end of file
diff --git a/3.2/containers-data/CCHashSet/Make/index.html b/3.2/containers-data/CCHashSet/Make/index.html
new file mode 100644
index 00000000..632d8edd
--- /dev/null
+++ b/3.2/containers-data/CCHashSet/Make/index.html
@@ -0,0 +1,2 @@
+
+Make (containers-data.CCHashSet.Make)
pp pp_elt returns a set printer, given a printer for individual elements.
\ No newline at end of file
diff --git a/3.2/containers-data/CCHashSet/index.html b/3.2/containers-data/CCHashSet/index.html
new file mode 100644
index 00000000..35a63d1d
--- /dev/null
+++ b/3.2/containers-data/CCHashSet/index.html
@@ -0,0 +1,2 @@
+
+CCHashSet (containers-data.CCHashSet)
Module CCHashSet
Mutable Set
status: unstable
since
0.13
type'a iter = ('a-> unit)-> unit
type'a printer = Stdlib.Format.formatter ->'a-> unit
\ No newline at end of file
diff --git a/3.2/containers-data/CCHashSet/module-type-ELEMENT/index.html b/3.2/containers-data/CCHashSet/module-type-ELEMENT/index.html
new file mode 100644
index 00000000..6c1299b9
--- /dev/null
+++ b/3.2/containers-data/CCHashSet/module-type-ELEMENT/index.html
@@ -0,0 +1,2 @@
+
+ELEMENT (containers-data.CCHashSet.ELEMENT)
\ No newline at end of file
diff --git a/3.2/containers-data/CCHashSet/module-type-S/index.html b/3.2/containers-data/CCHashSet/module-type-S/index.html
new file mode 100644
index 00000000..75361cc5
--- /dev/null
+++ b/3.2/containers-data/CCHashSet/module-type-S/index.html
@@ -0,0 +1,2 @@
+
+S (containers-data.CCHashSet.S)
pp pp_elt returns a set printer, given a printer for individual elements.
\ No newline at end of file
diff --git a/3.2/containers-data/CCHashTrie/.dune-keep b/3.2/containers-data/CCHashTrie/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers-data/CCHashTrie/Make/argument-1-K/index.html b/3.2/containers-data/CCHashTrie/Make/argument-1-K/index.html
new file mode 100644
index 00000000..a4e52f92
--- /dev/null
+++ b/3.2/containers-data/CCHashTrie/Make/argument-1-K/index.html
@@ -0,0 +1,2 @@
+
+1-K (containers-data.CCHashTrie.Make.1-K)
\ No newline at end of file
diff --git a/3.2/containers-data/CCHashTrie/Make/index.html b/3.2/containers-data/CCHashTrie/Make/index.html
new file mode 100644
index 00000000..32c22b0c
--- /dev/null
+++ b/3.2/containers-data/CCHashTrie/Make/index.html
@@ -0,0 +1,2 @@
+
+Make (containers-data.CCHashTrie.Make)
add_mut ~id k v m behaves like add k v m, except it will mutate in place whenever possible. Changes done with an id might affect all versions of the structure obtained with the same id (but not other versions).
val as_tree : 'at->[ `L of int * (key * 'a) list| `N ]ktree
For debugging purpose: explore the structure of the tree, with `L (h,l) being a leaf (with shared hash h) and `N an inner node.
\ No newline at end of file
diff --git a/3.2/containers-data/CCHashTrie/Transient/index.html b/3.2/containers-data/CCHashTrie/Transient/index.html
new file mode 100644
index 00000000..42d7f397
--- /dev/null
+++ b/3.2/containers-data/CCHashTrie/Transient/index.html
@@ -0,0 +1,2 @@
+
+Transient (containers-data.CCHashTrie.Transient)
Module CCHashTrie.Transient
Transient Identifiers
type t
Identifiers for transient modifications. A transient modification is uniquely identified by a Transient.t. Once Transient.freeze r is called, r cannot be used to modify the structure again.
with_ f creates a transient ID i, calls f i, freezes the ID i and returns the result of f i.
exceptionFrozen
Raised when a frozen ID is used.
\ No newline at end of file
diff --git a/3.2/containers-data/CCHashTrie/index.html b/3.2/containers-data/CCHashTrie/index.html
new file mode 100644
index 00000000..f77078b6
--- /dev/null
+++ b/3.2/containers-data/CCHashTrie/index.html
@@ -0,0 +1,2 @@
+
+CCHashTrie (containers-data.CCHashTrie)
Module CCHashTrie
Hash Tries
Trie indexed by the hash of the keys, where the branching factor is fixed. The goal is to have a quite efficient functional structure with fast update and access if the hash function is good. The trie is not binary, to improve cache locality and decrease depth.
Preliminary benchmarks (see the "tbl" section of benchmarks) tend to show that this type is quite efficient for small data sets.
status: unstable
since
0.13
type'a iter = ('a-> unit)-> unit
type'a gen = unit ->'a option
type'a printer = Stdlib.Format.formatter ->'a-> unit
type'a ktree = unit ->[ `Nil | `Node of 'a * 'aktree list ]
\ No newline at end of file
diff --git a/3.2/containers-data/CCHashTrie/module-type-KEY/index.html b/3.2/containers-data/CCHashTrie/module-type-KEY/index.html
new file mode 100644
index 00000000..07a18ced
--- /dev/null
+++ b/3.2/containers-data/CCHashTrie/module-type-KEY/index.html
@@ -0,0 +1,2 @@
+
+KEY (containers-data.CCHashTrie.KEY)
\ No newline at end of file
diff --git a/3.2/containers-data/CCHashTrie/module-type-S/index.html b/3.2/containers-data/CCHashTrie/module-type-S/index.html
new file mode 100644
index 00000000..94979e1f
--- /dev/null
+++ b/3.2/containers-data/CCHashTrie/module-type-S/index.html
@@ -0,0 +1,2 @@
+
+S (containers-data.CCHashTrie.S)
add_mut ~id k v m behaves like add k v m, except it will mutate in place whenever possible. Changes done with an id might affect all versions of the structure obtained with the same id (but not other versions).
val as_tree : 'at->[ `L of int * (key * 'a) list| `N ]ktree
For debugging purpose: explore the structure of the tree, with `L (h,l) being a leaf (with shared hash h) and `N an inner node.
\ No newline at end of file
diff --git a/3.2/containers-data/CCHet/.dune-keep b/3.2/containers-data/CCHet/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers-data/CCHet/Key/index.html b/3.2/containers-data/CCHet/Key/index.html
new file mode 100644
index 00000000..b890b422
--- /dev/null
+++ b/3.2/containers-data/CCHet/Key/index.html
@@ -0,0 +1,2 @@
+
+Key (containers-data.CCHet.Key)
\ No newline at end of file
diff --git a/3.2/containers-data/CCHet/Map/index.html b/3.2/containers-data/CCHet/Map/index.html
new file mode 100644
index 00000000..f1a8fd79
--- /dev/null
+++ b/3.2/containers-data/CCHet/Map/index.html
@@ -0,0 +1,2 @@
+
+Map (containers-data.CCHet.Map)
\ No newline at end of file
diff --git a/3.2/containers-data/CCHet/Tbl/index.html b/3.2/containers-data/CCHet/Tbl/index.html
new file mode 100644
index 00000000..538fed3a
--- /dev/null
+++ b/3.2/containers-data/CCHet/Tbl/index.html
@@ -0,0 +1,2 @@
+
+Tbl (containers-data.CCHet.Tbl)
\ No newline at end of file
diff --git a/3.2/containers-data/CCHet/index.html b/3.2/containers-data/CCHet/index.html
new file mode 100644
index 00000000..9232605c
--- /dev/null
+++ b/3.2/containers-data/CCHet/index.html
@@ -0,0 +1,2 @@
+
+CCHet (containers-data.CCHet)
Module CCHet
Associative containers with Heterogeneous Values
This is similar to CCMixtbl, but the injection is directly used as a key.
\ No newline at end of file
diff --git a/3.2/containers-data/CCImmutArray/.dune-keep b/3.2/containers-data/CCImmutArray/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers-data/CCImmutArray/index.html b/3.2/containers-data/CCImmutArray/index.html
new file mode 100644
index 00000000..7edd2ec3
--- /dev/null
+++ b/3.2/containers-data/CCImmutArray/index.html
@@ -0,0 +1,2 @@
+
+CCImmutArray (containers-data.CCImmutArray)
Module CCImmutArray
Immutable Arrays
Purely functional use of arrays. Update is costly, but reads are very fast. Sadly, it is not possible to make this type covariant without using black magic.
since
0.17
type'a t
Array of values of type 'a. The underlying type really is an array, but it will never be modified.
It should be covariant but OCaml will not accept it.
sub a start len returns a fresh array of length len, containing the elements from start to pstart + len - 1 of array a.
Raises Invalid_argument "Array.sub" if start and len do not designate a valid subarray of a; that is, if start < 0, or len < 0, or start + len > Array.length a.
pp ~pp_start ~pp_stop ~pp_sep pp_item ppf a formats the array a on ppf. Each element is formatted with pp_item, pp_start is called at the beginning, pp_stop is called at the end, pp_sep is called between each elements. By defaults pp_start and pp_stop does nothing and pp_sep defaults to (fun out -> Format.fprintf out ",@ ").
\ No newline at end of file
diff --git a/3.2/containers-data/CCIntMap/.dune-keep b/3.2/containers-data/CCIntMap/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers-data/CCIntMap/index.html b/3.2/containers-data/CCIntMap/index.html
new file mode 100644
index 00000000..a920e13b
--- /dev/null
+++ b/3.2/containers-data/CCIntMap/index.html
@@ -0,0 +1,2 @@
+
+CCIntMap (containers-data.CCIntMap)
val merge : f:(int ->[ `Left of 'a| `Right of 'b| `Both of 'a * 'b ]->'c option)->'at->'bt->'ct
merge ~f m1 m2 merges m1 and m2 together, calling f once on every key that occurs in at least one of m1 and m2. if f k binding = Some c then k -> c is part of the result, else k is not part of the result.
\ No newline at end of file
diff --git a/3.2/containers-data/CCKTree/.dune-keep b/3.2/containers-data/CCKTree/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers-data/CCKTree/Dot/index.html b/3.2/containers-data/CCKTree/Dot/index.html
new file mode 100644
index 00000000..fa516972
--- /dev/null
+++ b/3.2/containers-data/CCKTree/Dot/index.html
@@ -0,0 +1,2 @@
+
+Dot (containers-data.CCKTree.Dot)
print_to_file filename g prints g into a file whose name is filename.
since
0.6.1
val to_file : ?name:string-> string ->attribute listt list-> unit
to_file filename trees makes a graph out of the trees, opens the file filename and prints the graph into the file.
parameter name
name of the graph.
since
0.6.1
\ No newline at end of file
diff --git a/3.2/containers-data/CCKTree/class-type-pset/index.html b/3.2/containers-data/CCKTree/class-type-pset/index.html
new file mode 100644
index 00000000..42bfa013
--- /dev/null
+++ b/3.2/containers-data/CCKTree/class-type-pset/index.html
@@ -0,0 +1,2 @@
+
+pset (containers-data.CCKTree.pset)
\ No newline at end of file
diff --git a/3.2/containers-data/CCKTree/index.html b/3.2/containers-data/CCKTree/index.html
new file mode 100644
index 00000000..99378841
--- /dev/null
+++ b/3.2/containers-data/CCKTree/index.html
@@ -0,0 +1,15 @@
+
+CCKTree (containers-data.CCKTree)
Module CCKTree
Lazy Tree Structure
This structure can be used to represent trees and directed graphs (as infinite trees) in a lazy fashion. Like CCKList, it is a structural type.
type'a iter = ('a-> unit)-> unit
type'a gen = unit ->'a option
type'a printer = Stdlib.Format.formatter ->'a-> unit
Basics
type+'a t = unit ->[ `Nil | `Node of 'a * 'at list ]
val force : 'at->[ `Nil | `Node of 'a * 'b list ]as 'b
force t evaluates t completely and returns a regular tree structure.
since
0.13
val find : pset:'apset->('a->'b option)->'at->'b option
Look for an element that maps to Some _.
Pretty-printing
Example (tree of calls for naive Fibonacci function):
let mk_fib n =
+ let rec fib' l r i =
+ if i=n then r else fib' r (l+r) (i+1)
+ in fib' 1 1 1;;
+
+let rec fib n = match n with
+ | 0 | 1 -> CCKTree.singleton (`Cst n)
+ | _ -> CCKTree.node2 (`Plus (mk_fib n)) (fib (n-1)) (fib (n-2));;
+
+let pp_node fmt = function
+ | `Cst n -> Format.fprintf fmt "%d" n
+ | `Plus n -> Format.fprintf fmt "%d" n;;
+
+Format.printf "%a@." (CCKTree.pp pp_node) (fib 8);;
\ No newline at end of file
diff --git a/3.2/containers-data/CCLazy_list/.dune-keep b/3.2/containers-data/CCLazy_list/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers-data/CCLazy_list/Infix/index.html b/3.2/containers-data/CCLazy_list/Infix/index.html
new file mode 100644
index 00000000..2e116896
--- /dev/null
+++ b/3.2/containers-data/CCLazy_list/Infix/index.html
@@ -0,0 +1,2 @@
+
+Infix (containers-data.CCLazy_list.Infix)
\ No newline at end of file
diff --git a/3.2/containers-data/CCLazy_list/index.html b/3.2/containers-data/CCLazy_list/index.html
new file mode 100644
index 00000000..53934e67
--- /dev/null
+++ b/3.2/containers-data/CCLazy_list/index.html
@@ -0,0 +1,2 @@
+
+CCLazy_list (containers-data.CCLazy_list)
\ No newline at end of file
diff --git a/3.2/containers-data/CCMixmap/.dune-keep b/3.2/containers-data/CCMixmap/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers-data/CCMixmap/Make/argument-1-X/index.html b/3.2/containers-data/CCMixmap/Make/argument-1-X/index.html
new file mode 100644
index 00000000..9bbcca99
--- /dev/null
+++ b/3.2/containers-data/CCMixmap/Make/argument-1-X/index.html
@@ -0,0 +1,2 @@
+
+1-X (containers-data.CCMixmap.Make.1-X)
\ No newline at end of file
diff --git a/3.2/containers-data/CCMixmap/Make/index.html b/3.2/containers-data/CCMixmap/Make/index.html
new file mode 100644
index 00000000..5c571bf1
--- /dev/null
+++ b/3.2/containers-data/CCMixmap/Make/index.html
@@ -0,0 +1,2 @@
+
+Make (containers-data.CCMixmap.Make)
\ No newline at end of file
diff --git a/3.2/containers-data/CCMixmap/index.html b/3.2/containers-data/CCMixmap/index.html
new file mode 100644
index 00000000..78104323
--- /dev/null
+++ b/3.2/containers-data/CCMixmap/index.html
@@ -0,0 +1,19 @@
+
+CCMixmap (containers-data.CCMixmap)
Module CCMixmap
Maps with Heterogeneous Values
status: experimental
module M = CCMixmap.Make(CCInt)
+
+let inj_int = CCMixmap.create_inj()
+let inj_str = CCMixmap.create_inj()
+let inj_list_int = CCMixmap.create_inj()
+
+let m =
+ M.empty
+ |> M.add ~inj:inj_int 1 1
+ |> M.add ~inj:inj_str 2 "2"
+ |> M.add ~inj:inj_list_int 3 [3;3;3]
+
+ assert (M.get ~inj:inj_int 1 m = Some 1)
+ assert (M.get ~inj:inj_str 1 m = None)
+ assert (M.get ~inj:inj_str 2 m = Some "2")
+ assert (M.get ~inj:inj_int 2 m = None)
+ assert (M.get ~inj:inj_list_int 3 m = Some [3;3;3])
+ assert (M.get ~inj:inj_str 3 m = None)
change of API, the map is last argument to make piping with |> easier since 0.16.
since
0.9
type'a injection
An accessor for values of type 'a in any map. Values put in the map using a key can only be retrieved using this very same key.
Return a value that works for a given type of values. This function is normally called once for each type of value. Several keys may be created for the same type, but a value set with a given setter can only be retrieved with the matching getter. The same key can be reused across multiple maps (although not in a thread-safe way).
\ No newline at end of file
diff --git a/3.2/containers-data/CCMixmap/module-type-ORD/index.html b/3.2/containers-data/CCMixmap/module-type-ORD/index.html
new file mode 100644
index 00000000..9ea1e7ef
--- /dev/null
+++ b/3.2/containers-data/CCMixmap/module-type-ORD/index.html
@@ -0,0 +1,2 @@
+
+ORD (containers-data.CCMixmap.ORD)
\ No newline at end of file
diff --git a/3.2/containers-data/CCMixmap/module-type-S/index.html b/3.2/containers-data/CCMixmap/module-type-S/index.html
new file mode 100644
index 00000000..5953da19
--- /dev/null
+++ b/3.2/containers-data/CCMixmap/module-type-S/index.html
@@ -0,0 +1,2 @@
+
+S (containers-data.CCMixmap.S)
Module type CCMixmap.S
type key
type t
A map containing values of different types, indexed by key.
\ No newline at end of file
diff --git a/3.2/containers-data/CCMixset/.dune-keep b/3.2/containers-data/CCMixset/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers-data/CCMixset/index.html b/3.2/containers-data/CCMixset/index.html
new file mode 100644
index 00000000..a2c405d4
--- /dev/null
+++ b/3.2/containers-data/CCMixset/index.html
@@ -0,0 +1,14 @@
+
+CCMixset (containers-data.CCMixset)
Module CCMixset
Set of Heterogeneous Values
let k1 : int key = newkey () in
+let k2 : int key = newkey () in
+let k3 : string key = newkey () in
+let set =
+ empty
+ |> set ~key:k1 1
+ |> set ~key:k2 2
+ |> set ~key:k3 "3"
+in
+assert (get ~key:k1 set = Some 1);
+assert (get ~key:k2 set = Some 2);
+assert (get ~key:k3 set = Some "3");
+()
since
0.11
type t
A set of values of heterogeneous types
type'a key
A unique "key" to access a value of type 'a in a set
newkey () creates a new unique key that can be used to access a 'a value in a set. Each key created with newkey is distinct from any other key, even if they have the same type.
\ No newline at end of file
diff --git a/3.2/containers-data/CCMixtbl/.dune-keep b/3.2/containers-data/CCMixtbl/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers-data/CCMixtbl/index.html b/3.2/containers-data/CCMixtbl/index.html
new file mode 100644
index 00000000..ad9060c9
--- /dev/null
+++ b/3.2/containers-data/CCMixtbl/index.html
@@ -0,0 +1,22 @@
+
+CCMixtbl (containers-data.CCMixtbl)
Module CCMixtbl
Hash Table with Heterogeneous Keys
From https://github.com/mjambon/mixtbl (thanks to him). Example:
Return a value that works for a given type of values. This function is normally called once for each type of value. Several keys may be created for the same type, but a value set with a given setter can only be retrieved with the matching getter. The same key can be reused across multiple tables (although not in a thread-safe way).
\ No newline at end of file
diff --git a/3.2/containers-data/CCMultiMap/.dune-keep b/3.2/containers-data/CCMultiMap/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers-data/CCMultiMap/Make/argument-1-K/index.html b/3.2/containers-data/CCMultiMap/Make/argument-1-K/index.html
new file mode 100644
index 00000000..f772a014
--- /dev/null
+++ b/3.2/containers-data/CCMultiMap/Make/argument-1-K/index.html
@@ -0,0 +1,2 @@
+
+1-K (containers-data.CCMultiMap.Make.1-K)
\ No newline at end of file
diff --git a/3.2/containers-data/CCMultiMap/Make/argument-2-V/index.html b/3.2/containers-data/CCMultiMap/Make/argument-2-V/index.html
new file mode 100644
index 00000000..2a4827bf
--- /dev/null
+++ b/3.2/containers-data/CCMultiMap/Make/argument-2-V/index.html
@@ -0,0 +1,2 @@
+
+2-V (containers-data.CCMultiMap.Make.2-V)
\ No newline at end of file
diff --git a/3.2/containers-data/CCMultiMap/Make/index.html b/3.2/containers-data/CCMultiMap/Make/index.html
new file mode 100644
index 00000000..7423dec1
--- /dev/null
+++ b/3.2/containers-data/CCMultiMap/Make/index.html
@@ -0,0 +1,2 @@
+
+Make (containers-data.CCMultiMap.Make)
\ No newline at end of file
diff --git a/3.2/containers-data/CCMultiMap/MakeBidir/argument-1-L/index.html b/3.2/containers-data/CCMultiMap/MakeBidir/argument-1-L/index.html
new file mode 100644
index 00000000..82b93c91
--- /dev/null
+++ b/3.2/containers-data/CCMultiMap/MakeBidir/argument-1-L/index.html
@@ -0,0 +1,2 @@
+
+1-L (containers-data.CCMultiMap.MakeBidir.1-L)
\ No newline at end of file
diff --git a/3.2/containers-data/CCMultiMap/MakeBidir/argument-2-R/index.html b/3.2/containers-data/CCMultiMap/MakeBidir/argument-2-R/index.html
new file mode 100644
index 00000000..c60c3543
--- /dev/null
+++ b/3.2/containers-data/CCMultiMap/MakeBidir/argument-2-R/index.html
@@ -0,0 +1,2 @@
+
+2-R (containers-data.CCMultiMap.MakeBidir.2-R)
\ No newline at end of file
diff --git a/3.2/containers-data/CCMultiMap/MakeBidir/index.html b/3.2/containers-data/CCMultiMap/MakeBidir/index.html
new file mode 100644
index 00000000..007d51fd
--- /dev/null
+++ b/3.2/containers-data/CCMultiMap/MakeBidir/index.html
@@ -0,0 +1,2 @@
+
+MakeBidir (containers-data.CCMultiMap.MakeBidir)
\ No newline at end of file
diff --git a/3.2/containers-data/CCMultiMap/index.html b/3.2/containers-data/CCMultiMap/index.html
new file mode 100644
index 00000000..c51d47d4
--- /dev/null
+++ b/3.2/containers-data/CCMultiMap/index.html
@@ -0,0 +1,2 @@
+
+CCMultiMap (containers-data.CCMultiMap)
\ No newline at end of file
diff --git a/3.2/containers-data/CCMultiMap/module-type-BIDIR/index.html b/3.2/containers-data/CCMultiMap/module-type-BIDIR/index.html
new file mode 100644
index 00000000..4eddbecd
--- /dev/null
+++ b/3.2/containers-data/CCMultiMap/module-type-BIDIR/index.html
@@ -0,0 +1,2 @@
+
+BIDIR (containers-data.CCMultiMap.BIDIR)
\ No newline at end of file
diff --git a/3.2/containers-data/CCMultiMap/module-type-OrderedType/index.html b/3.2/containers-data/CCMultiMap/module-type-OrderedType/index.html
new file mode 100644
index 00000000..29bb58be
--- /dev/null
+++ b/3.2/containers-data/CCMultiMap/module-type-OrderedType/index.html
@@ -0,0 +1,2 @@
+
+OrderedType (containers-data.CCMultiMap.OrderedType)
\ No newline at end of file
diff --git a/3.2/containers-data/CCMultiMap/module-type-S/index.html b/3.2/containers-data/CCMultiMap/module-type-S/index.html
new file mode 100644
index 00000000..4a28dbae
--- /dev/null
+++ b/3.2/containers-data/CCMultiMap/module-type-S/index.html
@@ -0,0 +1,2 @@
+
+S (containers-data.CCMultiMap.S)
\ No newline at end of file
diff --git a/3.2/containers-data/CCMultiSet/.dune-keep b/3.2/containers-data/CCMultiSet/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers-data/CCMultiSet/Make/index.html b/3.2/containers-data/CCMultiSet/Make/index.html
new file mode 100644
index 00000000..c145d67c
--- /dev/null
+++ b/3.2/containers-data/CCMultiSet/Make/index.html
@@ -0,0 +1,2 @@
+
+Make (containers-data.CCMultiSet.Make)
\ No newline at end of file
diff --git a/3.2/containers-data/CCMultiSet/index.html b/3.2/containers-data/CCMultiSet/index.html
new file mode 100644
index 00000000..9fe1450f
--- /dev/null
+++ b/3.2/containers-data/CCMultiSet/index.html
@@ -0,0 +1,2 @@
+
+CCMultiSet (containers-data.CCMultiSet)
moduleMake : functor (O : Stdlib.Set.OrderedType) ->Swithtypeelt = O.t
\ No newline at end of file
diff --git a/3.2/containers-data/CCMultiSet/module-type-S/index.html b/3.2/containers-data/CCMultiSet/module-type-S/index.html
new file mode 100644
index 00000000..67f1a875
--- /dev/null
+++ b/3.2/containers-data/CCMultiSet/module-type-S/index.html
@@ -0,0 +1,2 @@
+
+S (containers-data.CCMultiSet.S)
\ No newline at end of file
diff --git a/3.2/containers-data/CCMutHeap/.dune-keep b/3.2/containers-data/CCMutHeap/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers-data/CCMutHeap/Make/argument-1-X/index.html b/3.2/containers-data/CCMutHeap/Make/argument-1-X/index.html
new file mode 100644
index 00000000..812eb32d
--- /dev/null
+++ b/3.2/containers-data/CCMutHeap/Make/argument-1-X/index.html
@@ -0,0 +1,2 @@
+
+1-X (containers-data.CCMutHeap.Make.1-X)
\ No newline at end of file
diff --git a/3.2/containers-data/CCMutHeap/Make/index.html b/3.2/containers-data/CCMutHeap/Make/index.html
new file mode 100644
index 00000000..ac297c2c
--- /dev/null
+++ b/3.2/containers-data/CCMutHeap/Make/index.html
@@ -0,0 +1,2 @@
+
+Make (containers-data.CCMutHeap.Make)
Filter out values that don't satisfy the predicate
\ No newline at end of file
diff --git a/3.2/containers-data/CCMutHeap/index.html b/3.2/containers-data/CCMutHeap/index.html
new file mode 100644
index 00000000..d61dcf37
--- /dev/null
+++ b/3.2/containers-data/CCMutHeap/index.html
@@ -0,0 +1,2 @@
+
+CCMutHeap (containers-data.CCMutHeap)
Module CCMutHeap
Mutable Heaps
The classic binary heap in a vector.
STATUS: experimental, this might change in breaking ways.
\ No newline at end of file
diff --git a/3.2/containers-data/CCMutHeap/module-type-RANKED/index.html b/3.2/containers-data/CCMutHeap/module-type-RANKED/index.html
new file mode 100644
index 00000000..f9144ede
--- /dev/null
+++ b/3.2/containers-data/CCMutHeap/module-type-RANKED/index.html
@@ -0,0 +1,2 @@
+
+RANKED (containers-data.CCMutHeap.RANKED)
\ No newline at end of file
diff --git a/3.2/containers-data/CCMutHeap/module-type-S/index.html b/3.2/containers-data/CCMutHeap/module-type-S/index.html
new file mode 100644
index 00000000..17a6a78b
--- /dev/null
+++ b/3.2/containers-data/CCMutHeap/module-type-S/index.html
@@ -0,0 +1,2 @@
+
+S (containers-data.CCMutHeap.S)
Module type CCMutHeap.S
type elt
Type of elements
type t
Heap of elt, whose priority is increased or decreased incrementally (see decrease for instance)
Filter out values that don't satisfy the predicate
\ No newline at end of file
diff --git a/3.2/containers-data/CCMutHeap_intf/.dune-keep b/3.2/containers-data/CCMutHeap_intf/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers-data/CCMutHeap_intf/index.html b/3.2/containers-data/CCMutHeap_intf/index.html
new file mode 100644
index 00000000..d37b004f
--- /dev/null
+++ b/3.2/containers-data/CCMutHeap_intf/index.html
@@ -0,0 +1,2 @@
+
+CCMutHeap_intf (containers-data.CCMutHeap_intf)
\ No newline at end of file
diff --git a/3.2/containers-data/CCMutHeap_intf/module-type-RANKED/index.html b/3.2/containers-data/CCMutHeap_intf/module-type-RANKED/index.html
new file mode 100644
index 00000000..1aa58921
--- /dev/null
+++ b/3.2/containers-data/CCMutHeap_intf/module-type-RANKED/index.html
@@ -0,0 +1,2 @@
+
+RANKED (containers-data.CCMutHeap_intf.RANKED)
\ No newline at end of file
diff --git a/3.2/containers-data/CCMutHeap_intf/module-type-S/index.html b/3.2/containers-data/CCMutHeap_intf/module-type-S/index.html
new file mode 100644
index 00000000..2d00a36a
--- /dev/null
+++ b/3.2/containers-data/CCMutHeap_intf/module-type-S/index.html
@@ -0,0 +1,2 @@
+
+S (containers-data.CCMutHeap_intf.S)
Module type CCMutHeap_intf.S
type elt
Type of elements
type t
Heap of elt, whose priority is increased or decreased incrementally (see decrease for instance)
Filter out values that don't satisfy the predicate
\ No newline at end of file
diff --git a/3.2/containers-data/CCPersistentArray/.dune-keep b/3.2/containers-data/CCPersistentArray/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers-data/CCPersistentArray/index.html b/3.2/containers-data/CCPersistentArray/index.html
new file mode 100644
index 00000000..cd290c2e
--- /dev/null
+++ b/3.2/containers-data/CCPersistentArray/index.html
@@ -0,0 +1,2 @@
+
+CCPersistentArray (containers-data.CCPersistentArray)
Module CCPersistentArray
Persistent Arrays
From the paper by Jean-Christophe Filliâtre, "A persistent Union-Find data structure", see the ps version
make n x returns a persistent array of length n, with x. All the elements of this new array are initially physically equal to x (in the sense of the == predicate). Consequently, if x is mutable, it is shared among all elements of the array, and modifying x through one of the array entries will modify all other entries at the same time.
raises Invalid_argument
if n < 0 or n > Sys.max_array_length. If the value of x is a floating-point number, then the maximum size is only Sys.max_array_length / 2.
Apply the given function to all elements of the array, and return a persistent array initialized by the results of f. In the case of mapi, the function is also given the index of the element. It is equivalent to fun f t -> init (fun i -> f (get t i)).
\ No newline at end of file
diff --git a/3.2/containers-data/CCPersistentHashtbl/.dune-keep b/3.2/containers-data/CCPersistentHashtbl/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers-data/CCPersistentHashtbl/Make/argument-1-H/index.html b/3.2/containers-data/CCPersistentHashtbl/Make/argument-1-H/index.html
new file mode 100644
index 00000000..66700314
--- /dev/null
+++ b/3.2/containers-data/CCPersistentHashtbl/Make/argument-1-H/index.html
@@ -0,0 +1,2 @@
+
+1-H (containers-data.CCPersistentHashtbl.Make.1-H)
\ No newline at end of file
diff --git a/3.2/containers-data/CCPersistentHashtbl/Make/index.html b/3.2/containers-data/CCPersistentHashtbl/Make/index.html
new file mode 100644
index 00000000..912b1b53
--- /dev/null
+++ b/3.2/containers-data/CCPersistentHashtbl/Make/index.html
@@ -0,0 +1,2 @@
+
+Make (containers-data.CCPersistentHashtbl.Make)
Add the binding to the table, returning a new table. This erases the current binding for key, if any.
val update : 'at->key->('a option->'a option)->'at
update tbl key f calls f None if key doesn't belong in tbl, f (Some v) if key -> v otherwise; If f returns None then key is removed, else it returns Some v' and key -> v' is added.
Fresh copy of the table; the underlying structure is not shared anymore, so using both tables alternatively will be efficient.
val merge : f:(key->[ `Left of 'a| `Right of 'b| `Both of 'a * 'b ]->'c option)->'at->'bt->'ct
Merge two tables together into a new table. The function's argument correspond to values associated with the key (if present); if the function returns None the key will not appear in the result.
\ No newline at end of file
diff --git a/3.2/containers-data/CCPersistentHashtbl/index.html b/3.2/containers-data/CCPersistentHashtbl/index.html
new file mode 100644
index 00000000..8010870f
--- /dev/null
+++ b/3.2/containers-data/CCPersistentHashtbl/index.html
@@ -0,0 +1,2 @@
+
+CCPersistentHashtbl (containers-data.CCPersistentHashtbl)
Module CCPersistentHashtbl
Persistent hash-table on top of OCaml's hashtables
Almost as efficient as the regular Hashtbl type, but with a persistent interface (rewinding changes to get back in the past history). This is mostly useful for backtracking-like uses, or forward uses (never using old values).
This module is not thread-safe.
type'a iter = ('a-> unit)-> unit
type'a printer = Stdlib.Format.formatter ->'a-> unit
\ No newline at end of file
diff --git a/3.2/containers-data/CCPersistentHashtbl/module-type-HashedType/index.html b/3.2/containers-data/CCPersistentHashtbl/module-type-HashedType/index.html
new file mode 100644
index 00000000..d5aee15f
--- /dev/null
+++ b/3.2/containers-data/CCPersistentHashtbl/module-type-HashedType/index.html
@@ -0,0 +1,2 @@
+
+HashedType (containers-data.CCPersistentHashtbl.HashedType)
\ No newline at end of file
diff --git a/3.2/containers-data/CCPersistentHashtbl/module-type-S/index.html b/3.2/containers-data/CCPersistentHashtbl/module-type-S/index.html
new file mode 100644
index 00000000..43b5f42c
--- /dev/null
+++ b/3.2/containers-data/CCPersistentHashtbl/module-type-S/index.html
@@ -0,0 +1,2 @@
+
+S (containers-data.CCPersistentHashtbl.S)
Add the binding to the table, returning a new table. This erases the current binding for key, if any.
val update : 'at->key->('a option->'a option)->'at
update tbl key f calls f None if key doesn't belong in tbl, f (Some v) if key -> v otherwise; If f returns None then key is removed, else it returns Some v' and key -> v' is added.
Fresh copy of the table; the underlying structure is not shared anymore, so using both tables alternatively will be efficient.
val merge : f:(key->[ `Left of 'a| `Right of 'b| `Both of 'a * 'b ]->'c option)->'at->'bt->'ct
Merge two tables together into a new table. The function's argument correspond to values associated with the key (if present); if the function returns None the key will not appear in the result.
\ No newline at end of file
diff --git a/3.2/containers-data/CCRAL/.dune-keep b/3.2/containers-data/CCRAL/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers-data/CCRAL/Infix/index.html b/3.2/containers-data/CCRAL/Infix/index.html
new file mode 100644
index 00000000..4ba5a0d7
--- /dev/null
+++ b/3.2/containers-data/CCRAL/Infix/index.html
@@ -0,0 +1,2 @@
+
+Infix (containers-data.CCRAL.Infix)
a --^ b is the integer range from a to b, where b is excluded.
since
0.17
\ No newline at end of file
diff --git a/3.2/containers-data/CCRAL/index.html b/3.2/containers-data/CCRAL/index.html
new file mode 100644
index 00000000..91307a05
--- /dev/null
+++ b/3.2/containers-data/CCRAL/index.html
@@ -0,0 +1,2 @@
+
+CCRAL (containers-data.CCRAL)
Module CCRAL
Random-Access Lists
This is an OCaml implementation of Okasaki's paper "Purely Functional Random Access Lists". It defines a list-like data structure with O(1) cons/tail operations, and O(log(n)) lookup/modification operations.
\ No newline at end of file
diff --git a/3.2/containers-data/CCRingBuffer/.dune-keep b/3.2/containers-data/CCRingBuffer/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers-data/CCRingBuffer/Array/Byte/index.html b/3.2/containers-data/CCRingBuffer/Array/Byte/index.html
new file mode 100644
index 00000000..19977d7e
--- /dev/null
+++ b/3.2/containers-data/CCRingBuffer/Array/Byte/index.html
@@ -0,0 +1,2 @@
+
+Byte (containers-data.CCRingBuffer.Array.Byte)
iter f t iterates over the array t invoking f with the current element, in array order.
\ No newline at end of file
diff --git a/3.2/containers-data/CCRingBuffer/Array/Make/argument-1-Elt/index.html b/3.2/containers-data/CCRingBuffer/Array/Make/argument-1-Elt/index.html
new file mode 100644
index 00000000..b1ff70c9
--- /dev/null
+++ b/3.2/containers-data/CCRingBuffer/Array/Make/argument-1-Elt/index.html
@@ -0,0 +1,2 @@
+
+1-Elt (containers-data.CCRingBuffer.Array.Make.1-Elt)
\ No newline at end of file
diff --git a/3.2/containers-data/CCRingBuffer/Array/Make/index.html b/3.2/containers-data/CCRingBuffer/Array/Make/index.html
new file mode 100644
index 00000000..913f29a3
--- /dev/null
+++ b/3.2/containers-data/CCRingBuffer/Array/Make/index.html
@@ -0,0 +1,2 @@
+
+Make (containers-data.CCRingBuffer.Array.Make)
iter f t iterates over the array t invoking f with the current element, in array order.
\ No newline at end of file
diff --git a/3.2/containers-data/CCRingBuffer/Array/index.html b/3.2/containers-data/CCRingBuffer/Array/index.html
new file mode 100644
index 00000000..16804e01
--- /dev/null
+++ b/3.2/containers-data/CCRingBuffer/Array/index.html
@@ -0,0 +1,2 @@
+
+Array (containers-data.CCRingBuffer.Array)
\ No newline at end of file
diff --git a/3.2/containers-data/CCRingBuffer/Array/module-type-S/index.html b/3.2/containers-data/CCRingBuffer/Array/module-type-S/index.html
new file mode 100644
index 00000000..049745f6
--- /dev/null
+++ b/3.2/containers-data/CCRingBuffer/Array/module-type-S/index.html
@@ -0,0 +1,2 @@
+
+S (containers-data.CCRingBuffer.Array.S)
iter f t iterates over the array t invoking f with the current element, in array order.
\ No newline at end of file
diff --git a/3.2/containers-data/CCRingBuffer/Byte/index.html b/3.2/containers-data/CCRingBuffer/Byte/index.html
new file mode 100644
index 00000000..ae2bc10d
--- /dev/null
+++ b/3.2/containers-data/CCRingBuffer/Byte/index.html
@@ -0,0 +1,2 @@
+
+Byte (containers-data.CCRingBuffer.Byte)
create size creates a new bounded buffer with given size. The underlying array is allocated immediately and no further (large) allocation will happen from now on.
blit_from buf from_buf o len copies the slice o, ... o + len - 1 from an input buffer from_buf to the end of the buffer. If the slice is too large for the buffer, only the last part of the array will be copied.
\ No newline at end of file
diff --git a/3.2/containers-data/CCRingBuffer/Make/Array/index.html b/3.2/containers-data/CCRingBuffer/Make/Array/index.html
new file mode 100644
index 00000000..29d7e711
--- /dev/null
+++ b/3.2/containers-data/CCRingBuffer/Make/Array/index.html
@@ -0,0 +1,2 @@
+
+Array (containers-data.CCRingBuffer.Make.Array)
iter f t iterates over the array t invoking f with the current element, in array order.
\ No newline at end of file
diff --git a/3.2/containers-data/CCRingBuffer/Make/argument-1-X/index.html b/3.2/containers-data/CCRingBuffer/Make/argument-1-X/index.html
new file mode 100644
index 00000000..128ac3e5
--- /dev/null
+++ b/3.2/containers-data/CCRingBuffer/Make/argument-1-X/index.html
@@ -0,0 +1,2 @@
+
+1-X (containers-data.CCRingBuffer.Make.1-X)
\ No newline at end of file
diff --git a/3.2/containers-data/CCRingBuffer/Make/index.html b/3.2/containers-data/CCRingBuffer/Make/index.html
new file mode 100644
index 00000000..80a187dd
--- /dev/null
+++ b/3.2/containers-data/CCRingBuffer/Make/index.html
@@ -0,0 +1,2 @@
+
+Make (containers-data.CCRingBuffer.Make)
create size creates a new bounded buffer with given size. The underlying array is allocated immediately and no further (large) allocation will happen from now on.
blit_from buf from_buf o len copies the slice o, ... o + len - 1 from an input buffer from_buf to the end of the buffer. If the slice is too large for the buffer, only the last part of the array will be copied.
\ No newline at end of file
diff --git a/3.2/containers-data/CCRingBuffer/MakeFromArray/argument-1-A/index.html b/3.2/containers-data/CCRingBuffer/MakeFromArray/argument-1-A/index.html
new file mode 100644
index 00000000..cd920c1a
--- /dev/null
+++ b/3.2/containers-data/CCRingBuffer/MakeFromArray/argument-1-A/index.html
@@ -0,0 +1,2 @@
+
+1-A (containers-data.CCRingBuffer.MakeFromArray.1-A)
iter f t iterates over the array t invoking f with the current element, in array order.
\ No newline at end of file
diff --git a/3.2/containers-data/CCRingBuffer/MakeFromArray/index.html b/3.2/containers-data/CCRingBuffer/MakeFromArray/index.html
new file mode 100644
index 00000000..fc5d0dac
--- /dev/null
+++ b/3.2/containers-data/CCRingBuffer/MakeFromArray/index.html
@@ -0,0 +1,2 @@
+
+MakeFromArray (containers-data.CCRingBuffer.MakeFromArray)
Module CCRingBuffer.MakeFromArray
Makes a ring buffer module with the given array type
create size creates a new bounded buffer with given size. The underlying array is allocated immediately and no further (large) allocation will happen from now on.
blit_from buf from_buf o len copies the slice o, ... o + len - 1 from an input buffer from_buf to the end of the buffer. If the slice is too large for the buffer, only the last part of the array will be copied.
\ No newline at end of file
diff --git a/3.2/containers-data/CCRingBuffer/index.html b/3.2/containers-data/CCRingBuffer/index.html
new file mode 100644
index 00000000..725541a7
--- /dev/null
+++ b/3.2/containers-data/CCRingBuffer/index.html
@@ -0,0 +1,2 @@
+
+CCRingBuffer (containers-data.CCRingBuffer)
Module CCRingBuffer
Circular Buffer (Deque)
Useful for IO, or as a bounded-size alternative to Queue when batch operations are needed.
status: experimental
Change in the API to provide only a bounded buffer since 1.3
\ No newline at end of file
diff --git a/3.2/containers-data/CCRingBuffer/module-type-S/Array/index.html b/3.2/containers-data/CCRingBuffer/module-type-S/Array/index.html
new file mode 100644
index 00000000..45e387d6
--- /dev/null
+++ b/3.2/containers-data/CCRingBuffer/module-type-S/Array/index.html
@@ -0,0 +1,2 @@
+
+Array (containers-data.CCRingBuffer.S.Array)
iter f t iterates over the array t invoking f with the current element, in array order.
\ No newline at end of file
diff --git a/3.2/containers-data/CCRingBuffer/module-type-S/index.html b/3.2/containers-data/CCRingBuffer/module-type-S/index.html
new file mode 100644
index 00000000..b5c2b533
--- /dev/null
+++ b/3.2/containers-data/CCRingBuffer/module-type-S/index.html
@@ -0,0 +1,2 @@
+
+S (containers-data.CCRingBuffer.S)
Module type CCRingBuffer.S
Ring Buffer
The abstract ring buffer type, made concrete by choice of ARRAY module implementation
create size creates a new bounded buffer with given size. The underlying array is allocated immediately and no further (large) allocation will happen from now on.
blit_from buf from_buf o len copies the slice o, ... o + len - 1 from an input buffer from_buf to the end of the buffer. If the slice is too large for the buffer, only the last part of the array will be copied.
\ No newline at end of file
diff --git a/3.2/containers-data/CCSimple_queue/.dune-keep b/3.2/containers-data/CCSimple_queue/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers-data/CCSimple_queue/Infix/index.html b/3.2/containers-data/CCSimple_queue/Infix/index.html
new file mode 100644
index 00000000..9af133e8
--- /dev/null
+++ b/3.2/containers-data/CCSimple_queue/Infix/index.html
@@ -0,0 +1,2 @@
+
+Infix (containers-data.CCSimple_queue.Infix)
\ No newline at end of file
diff --git a/3.2/containers-data/CCSimple_queue/index.html b/3.2/containers-data/CCSimple_queue/index.html
new file mode 100644
index 00000000..5e417553
--- /dev/null
+++ b/3.2/containers-data/CCSimple_queue/index.html
@@ -0,0 +1,2 @@
+
+CCSimple_queue (containers-data.CCSimple_queue)
Module CCSimple_queue
Functional queues (fifo)
type'a iter = ('a-> unit)-> unit
Fast internal iterator.
since
2.8
type'a printer = Stdlib.Format.formatter ->'a-> unit
\ No newline at end of file
diff --git a/3.2/containers-data/CCTrie/.dune-keep b/3.2/containers-data/CCTrie/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers-data/CCTrie/Make/argument-1-W/index.html b/3.2/containers-data/CCTrie/Make/argument-1-W/index.html
new file mode 100644
index 00000000..29fe4c11
--- /dev/null
+++ b/3.2/containers-data/CCTrie/Make/argument-1-W/index.html
@@ -0,0 +1,2 @@
+
+1-W (containers-data.CCTrie.Make.1-W)
\ No newline at end of file
diff --git a/3.2/containers-data/CCTrie/Make/index.html b/3.2/containers-data/CCTrie/Make/index.html
new file mode 100644
index 00000000..6b38efb6
--- /dev/null
+++ b/3.2/containers-data/CCTrie/Make/index.html
@@ -0,0 +1,2 @@
+
+Make (containers-data.CCTrie.Make)
longest_prefix k m finds the longest prefix of k that leads to at least one path in m (it does not mean that the prefix is bound to a value.
Example: if m has keys "abc0" and "abcd", then longest_prefix "abc2" m will return "abc".
since
0.17
val update : key->('a option->'a option)->'at->'at
Update the binding for the given key. The function is given None if the key is absent, or Some v if key is bound to v; if it returns None the key is removed, otherwise it returns Some y and key becomes bound to y.
All bindings whose key is smaller or equal to the given key, in decreasing order.
\ No newline at end of file
diff --git a/3.2/containers-data/CCTrie/MakeArray/argument-1-X/index.html b/3.2/containers-data/CCTrie/MakeArray/argument-1-X/index.html
new file mode 100644
index 00000000..f124475e
--- /dev/null
+++ b/3.2/containers-data/CCTrie/MakeArray/argument-1-X/index.html
@@ -0,0 +1,2 @@
+
+1-X (containers-data.CCTrie.MakeArray.1-X)
\ No newline at end of file
diff --git a/3.2/containers-data/CCTrie/MakeArray/index.html b/3.2/containers-data/CCTrie/MakeArray/index.html
new file mode 100644
index 00000000..bd2044f6
--- /dev/null
+++ b/3.2/containers-data/CCTrie/MakeArray/index.html
@@ -0,0 +1,2 @@
+
+MakeArray (containers-data.CCTrie.MakeArray)
longest_prefix k m finds the longest prefix of k that leads to at least one path in m (it does not mean that the prefix is bound to a value.
Example: if m has keys "abc0" and "abcd", then longest_prefix "abc2" m will return "abc".
since
0.17
val update : key->('a option->'a option)->'at->'at
Update the binding for the given key. The function is given None if the key is absent, or Some v if key is bound to v; if it returns None the key is removed, otherwise it returns Some y and key becomes bound to y.
All bindings whose key is smaller or equal to the given key, in decreasing order.
\ No newline at end of file
diff --git a/3.2/containers-data/CCTrie/MakeList/argument-1-X/index.html b/3.2/containers-data/CCTrie/MakeList/argument-1-X/index.html
new file mode 100644
index 00000000..fbc3b020
--- /dev/null
+++ b/3.2/containers-data/CCTrie/MakeList/argument-1-X/index.html
@@ -0,0 +1,2 @@
+
+1-X (containers-data.CCTrie.MakeList.1-X)
\ No newline at end of file
diff --git a/3.2/containers-data/CCTrie/MakeList/index.html b/3.2/containers-data/CCTrie/MakeList/index.html
new file mode 100644
index 00000000..a9cf259f
--- /dev/null
+++ b/3.2/containers-data/CCTrie/MakeList/index.html
@@ -0,0 +1,2 @@
+
+MakeList (containers-data.CCTrie.MakeList)
longest_prefix k m finds the longest prefix of k that leads to at least one path in m (it does not mean that the prefix is bound to a value.
Example: if m has keys "abc0" and "abcd", then longest_prefix "abc2" m will return "abc".
since
0.17
val update : key->('a option->'a option)->'at->'at
Update the binding for the given key. The function is given None if the key is absent, or Some v if key is bound to v; if it returns None the key is removed, otherwise it returns Some y and key becomes bound to y.
All bindings whose key is smaller or equal to the given key, in decreasing order.
\ No newline at end of file
diff --git a/3.2/containers-data/CCTrie/String/index.html b/3.2/containers-data/CCTrie/String/index.html
new file mode 100644
index 00000000..00a0b4ee
--- /dev/null
+++ b/3.2/containers-data/CCTrie/String/index.html
@@ -0,0 +1,2 @@
+
+String (containers-data.CCTrie.String)
longest_prefix k m finds the longest prefix of k that leads to at least one path in m (it does not mean that the prefix is bound to a value.
Example: if m has keys "abc0" and "abcd", then longest_prefix "abc2" m will return "abc".
since
0.17
val update : key->('a option->'a option)->'at->'at
Update the binding for the given key. The function is given None if the key is absent, or Some v if key is bound to v; if it returns None the key is removed, otherwise it returns Some y and key becomes bound to y.
All bindings whose key is smaller or equal to the given key, in decreasing order.
\ No newline at end of file
diff --git a/3.2/containers-data/CCTrie/index.html b/3.2/containers-data/CCTrie/index.html
new file mode 100644
index 00000000..80cd46c8
--- /dev/null
+++ b/3.2/containers-data/CCTrie/index.html
@@ -0,0 +1,2 @@
+
+CCTrie (containers-data.CCTrie)
Module CCTrie
Prefix Tree
type'a iter = ('a-> unit)-> unit
type'a ktree = unit ->[ `Nil | `Node of 'a * 'aktree list ]
Signatures
A Composite Word
Words are made of characters, who belong to a total order
\ No newline at end of file
diff --git a/3.2/containers-data/CCTrie/module-type-ORDERED/index.html b/3.2/containers-data/CCTrie/module-type-ORDERED/index.html
new file mode 100644
index 00000000..e84ef187
--- /dev/null
+++ b/3.2/containers-data/CCTrie/module-type-ORDERED/index.html
@@ -0,0 +1,2 @@
+
+ORDERED (containers-data.CCTrie.ORDERED)
\ No newline at end of file
diff --git a/3.2/containers-data/CCTrie/module-type-S/index.html b/3.2/containers-data/CCTrie/module-type-S/index.html
new file mode 100644
index 00000000..5a433661
--- /dev/null
+++ b/3.2/containers-data/CCTrie/module-type-S/index.html
@@ -0,0 +1,2 @@
+
+S (containers-data.CCTrie.S)
longest_prefix k m finds the longest prefix of k that leads to at least one path in m (it does not mean that the prefix is bound to a value.
Example: if m has keys "abc0" and "abcd", then longest_prefix "abc2" m will return "abc".
since
0.17
val update : key->('a option->'a option)->'at->'at
Update the binding for the given key. The function is given None if the key is absent, or Some v if key is bound to v; if it returns None the key is removed, otherwise it returns Some y and key becomes bound to y.
All bindings whose key is smaller or equal to the given key, in decreasing order.
\ No newline at end of file
diff --git a/3.2/containers-data/CCTrie/module-type-WORD/index.html b/3.2/containers-data/CCTrie/module-type-WORD/index.html
new file mode 100644
index 00000000..408aad91
--- /dev/null
+++ b/3.2/containers-data/CCTrie/module-type-WORD/index.html
@@ -0,0 +1,2 @@
+
+WORD (containers-data.CCTrie.WORD)
\ No newline at end of file
diff --git a/3.2/containers-data/CCWBTree/.dune-keep b/3.2/containers-data/CCWBTree/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers-data/CCWBTree/Make/argument-1-X/index.html b/3.2/containers-data/CCWBTree/Make/argument-1-X/index.html
new file mode 100644
index 00000000..f07a9220
--- /dev/null
+++ b/3.2/containers-data/CCWBTree/Make/argument-1-X/index.html
@@ -0,0 +1,2 @@
+
+1-X (containers-data.CCWBTree.Make.1-X)
\ No newline at end of file
diff --git a/3.2/containers-data/CCWBTree/Make/index.html b/3.2/containers-data/CCWBTree/Make/index.html
new file mode 100644
index 00000000..f7145065
--- /dev/null
+++ b/3.2/containers-data/CCWBTree/Make/index.html
@@ -0,0 +1,2 @@
+
+Make (containers-data.CCWBTree.Make)
val get_rank : key->'at->[ `At of int| `After of int| `First ]
get_rank k m looks for the rank of k in m, i.e. the index of k in the sorted list of bindings of m. let (`At n) = get_rank k m in nth_exn n m = get m k should hold.
split k t returns l, o, r where l is the part of the map with keys smaller than k, r has keys bigger than k, and o = Some v if k, v belonged to the map.
val merge : f:(key->'a option->'b option->'c option)->'at->'bt->'ct
\ No newline at end of file
diff --git a/3.2/containers-data/CCWBTree/MakeFull/argument-1-X/index.html b/3.2/containers-data/CCWBTree/MakeFull/argument-1-X/index.html
new file mode 100644
index 00000000..aa50857e
--- /dev/null
+++ b/3.2/containers-data/CCWBTree/MakeFull/argument-1-X/index.html
@@ -0,0 +1,2 @@
+
+1-X (containers-data.CCWBTree.MakeFull.1-X)
\ No newline at end of file
diff --git a/3.2/containers-data/CCWBTree/MakeFull/index.html b/3.2/containers-data/CCWBTree/MakeFull/index.html
new file mode 100644
index 00000000..64c1132c
--- /dev/null
+++ b/3.2/containers-data/CCWBTree/MakeFull/index.html
@@ -0,0 +1,2 @@
+
+MakeFull (containers-data.CCWBTree.MakeFull)
val get_rank : key->'at->[ `At of int| `After of int| `First ]
get_rank k m looks for the rank of k in m, i.e. the index of k in the sorted list of bindings of m. let (`At n) = get_rank k m in nth_exn n m = get m k should hold.
split k t returns l, o, r where l is the part of the map with keys smaller than k, r has keys bigger than k, and o = Some v if k, v belonged to the map.
val merge : f:(key->'a option->'b option->'c option)->'at->'bt->'ct
\ No newline at end of file
diff --git a/3.2/containers-data/CCWBTree/index.html b/3.2/containers-data/CCWBTree/index.html
new file mode 100644
index 00000000..98934dbe
--- /dev/null
+++ b/3.2/containers-data/CCWBTree/index.html
@@ -0,0 +1,2 @@
+
+CCWBTree (containers-data.CCWBTree)
Module CCWBTree
Weight-Balanced Tree
status: experimental
since
0.13
type'a iter = ('a-> unit)-> unit
type'a gen = unit ->'a option
type'a printer = Stdlib.Format.formatter ->'a-> unit
\ No newline at end of file
diff --git a/3.2/containers-data/CCWBTree/module-type-KEY/index.html b/3.2/containers-data/CCWBTree/module-type-KEY/index.html
new file mode 100644
index 00000000..bed22695
--- /dev/null
+++ b/3.2/containers-data/CCWBTree/module-type-KEY/index.html
@@ -0,0 +1,2 @@
+
+KEY (containers-data.CCWBTree.KEY)
\ No newline at end of file
diff --git a/3.2/containers-data/CCWBTree/module-type-ORD/index.html b/3.2/containers-data/CCWBTree/module-type-ORD/index.html
new file mode 100644
index 00000000..e9ea6bd4
--- /dev/null
+++ b/3.2/containers-data/CCWBTree/module-type-ORD/index.html
@@ -0,0 +1,2 @@
+
+ORD (containers-data.CCWBTree.ORD)
\ No newline at end of file
diff --git a/3.2/containers-data/CCWBTree/module-type-S/index.html b/3.2/containers-data/CCWBTree/module-type-S/index.html
new file mode 100644
index 00000000..fb0bf9eb
--- /dev/null
+++ b/3.2/containers-data/CCWBTree/module-type-S/index.html
@@ -0,0 +1,2 @@
+
+S (containers-data.CCWBTree.S)
val get_rank : key->'at->[ `At of int| `After of int| `First ]
get_rank k m looks for the rank of k in m, i.e. the index of k in the sorted list of bindings of m. let (`At n) = get_rank k m in nth_exn n m = get m k should hold.
split k t returns l, o, r where l is the part of the map with keys smaller than k, r has keys bigger than k, and o = Some v if k, v belonged to the map.
val merge : f:(key->'a option->'b option->'c option)->'at->'bt->'ct
\ No newline at end of file
diff --git a/3.2/containers-data/CCZipper/.dune-keep b/3.2/containers-data/CCZipper/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers-data/CCZipper/index.html b/3.2/containers-data/CCZipper/index.html
new file mode 100644
index 00000000..5d9fa011
--- /dev/null
+++ b/3.2/containers-data/CCZipper/index.html
@@ -0,0 +1,2 @@
+
+CCZipper (containers-data.CCZipper)
Module CCZipper
List Zipper
since
1.0
type'a t = 'a list * 'a list
The pair l, r represents the list List.rev_append l r, but with the focus on r
Drop every element on the "right" (calling right then will do nothing), including the focused element if it is present.
\ No newline at end of file
diff --git a/3.2/containers-data/Containers_data_top/.dune-keep b/3.2/containers-data/Containers_data_top/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers-data/Containers_data_top/index.html b/3.2/containers-data/Containers_data_top/index.html
new file mode 100644
index 00000000..dc81f637
--- /dev/null
+++ b/3.2/containers-data/Containers_data_top/index.html
@@ -0,0 +1,2 @@
+
+Containers_data_top (containers-data.Containers_data_top)
Module Containers_data_top
type'a printer = Stdlib.Format.formatter ->'a-> unit
val eval_exn : string -> bool
val install_printer : string -> unit
val install_printers : string list-> unit
\ No newline at end of file
diff --git a/3.2/containers-data/index.html b/3.2/containers-data/index.html
new file mode 100644
index 00000000..a130927b
--- /dev/null
+++ b/3.2/containers-data/index.html
@@ -0,0 +1,2 @@
+
+index (containers-data.index)
containers-data index
Library containers-data
This library exposes the following toplevel modules:
\ No newline at end of file
diff --git a/3.2/containers-thread/CCBlockingQueue/.dune-keep b/3.2/containers-thread/CCBlockingQueue/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers-thread/CCBlockingQueue/index.html b/3.2/containers-thread/CCBlockingQueue/index.html
new file mode 100644
index 00000000..9b00f052
--- /dev/null
+++ b/3.2/containers-thread/CCBlockingQueue/index.html
@@ -0,0 +1,2 @@
+
+CCBlockingQueue (containers-thread.CCBlockingQueue)
Module CCBlockingQueue
Blocking Queue
This queue has a limited size. Pushing a value on the queue when it is full will block.
Create a new queue of size n. Using n=max_int amounts to using an infinite queue (2^61 items is a lot to fit in memory); using n=1 amounts to using a box with 0 or 1 elements inside.
\ No newline at end of file
diff --git a/3.2/containers-thread/CCLock/.dune-keep b/3.2/containers-thread/CCLock/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers-thread/CCLock/LockRef/index.html b/3.2/containers-thread/CCLock/LockRef/index.html
new file mode 100644
index 00000000..de019f3b
--- /dev/null
+++ b/3.2/containers-thread/CCLock/LockRef/index.html
@@ -0,0 +1,2 @@
+
+LockRef (containers-thread.CCLock.LockRef)
Module CCLock.LockRef
Type allowing to manipulate the lock as a reference.
\ No newline at end of file
diff --git a/3.2/containers-thread/CCLock/index.html b/3.2/containers-thread/CCLock/index.html
new file mode 100644
index 00000000..6a866c56
--- /dev/null
+++ b/3.2/containers-thread/CCLock/index.html
@@ -0,0 +1,2 @@
+
+CCLock (containers-thread.CCLock)
with_lock l f runs f x where x is the value protected with the lock l, in a critical section. If f x fails, with_lock l f fails too but the lock is released.
try_with_lock l f runs f x in a critical section if l is not locked. x is the value protected by the lock l. If f x fails, try_with_lock l f fails too but the lock is released.
Type allowing to manipulate the lock as a reference.
val with_lock_as_ref : 'at->f:('aLockRef.t->'b)->'b
with_lock_as_ref l f calls f with a reference-like object that allows to manipulate the value of l safely. The object passed to f must not escape the function call.
get_then_clear b sets b to false, and returns the old value.
since
0.16
\ No newline at end of file
diff --git a/3.2/containers-thread/CCPool/.dune-keep b/3.2/containers-thread/CCPool/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers-thread/CCPool/Make/Fut/Infix/index.html b/3.2/containers-thread/CCPool/Make/Fut/Infix/index.html
new file mode 100644
index 00000000..07538e9a
--- /dev/null
+++ b/3.2/containers-thread/CCPool/Make/Fut/Infix/index.html
@@ -0,0 +1,2 @@
+
+Infix (containers-thread.CCPool.Make.Fut.Infix)
\ No newline at end of file
diff --git a/3.2/containers-thread/CCPool/Make/Fut/index.html b/3.2/containers-thread/CCPool/Make/Fut/index.html
new file mode 100644
index 00000000..01b899c5
--- /dev/null
+++ b/3.2/containers-thread/CCPool/Make/Fut/index.html
@@ -0,0 +1,2 @@
+
+Fut (containers-thread.CCPool.Make.Fut)
Module Make.Fut
Futures
The futures are registration points for callbacks, storing a state, that are executed in the pool using run.
Blocking get: wait for the future to be evaluated, and get the value, or the exception that failed the future is returned. Raise e if the future failed with e.
Attach a handler to be called upon failure. The handler should not call any function on the future. Might be evaluated now if the future is already done.
Attach a handler to be called when the future is evaluated. The handler should not call functions on the future. Might be evaluated now if the future is already done.
\ No newline at end of file
diff --git a/3.2/containers-thread/CCPool/Make/argument-1-P/index.html b/3.2/containers-thread/CCPool/Make/argument-1-P/index.html
new file mode 100644
index 00000000..19af58e8
--- /dev/null
+++ b/3.2/containers-thread/CCPool/Make/argument-1-P/index.html
@@ -0,0 +1,2 @@
+
+1-P (containers-thread.CCPool.Make.1-P)
Parameter Make.1-P
val max_size : int
Maximum number of threads in the pool.
\ No newline at end of file
diff --git a/3.2/containers-thread/CCPool/Make/index.html b/3.2/containers-thread/CCPool/Make/index.html
new file mode 100644
index 00000000..3faf6a5c
--- /dev/null
+++ b/3.2/containers-thread/CCPool/Make/index.html
@@ -0,0 +1,2 @@
+
+Make (containers-thread.CCPool.Make)
\ No newline at end of file
diff --git a/3.2/containers-thread/CCPool/index.html b/3.2/containers-thread/CCPool/index.html
new file mode 100644
index 00000000..23b9f652
--- /dev/null
+++ b/3.2/containers-thread/CCPool/index.html
@@ -0,0 +1,2 @@
+
+CCPool (containers-thread.CCPool)
\ No newline at end of file
diff --git a/3.2/containers-thread/CCPool/module-type-PARAM/index.html b/3.2/containers-thread/CCPool/module-type-PARAM/index.html
new file mode 100644
index 00000000..208ba5d4
--- /dev/null
+++ b/3.2/containers-thread/CCPool/module-type-PARAM/index.html
@@ -0,0 +1,2 @@
+
+PARAM (containers-thread.CCPool.PARAM)
Module type CCPool.PARAM
val max_size : int
Maximum number of threads in the pool.
\ No newline at end of file
diff --git a/3.2/containers-thread/CCSemaphore/.dune-keep b/3.2/containers-thread/CCSemaphore/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers-thread/CCSemaphore/index.html b/3.2/containers-thread/CCSemaphore/index.html
new file mode 100644
index 00000000..7b56f120
--- /dev/null
+++ b/3.2/containers-thread/CCSemaphore/index.html
@@ -0,0 +1,2 @@
+
+CCSemaphore (containers-thread.CCSemaphore)
with_acquire ~n s ~f first acquires s with n units, calls f (), and then releases s with n units. Safely release the semaphore even if f () fails.
val wait_until_at_least : n:int->t->f:(unit ->'a)->'a
wait_until_at_least ~n s ~f waits until get s >= n, then calls f () and returns its result. Doesn't modify the semaphore.
\ No newline at end of file
diff --git a/3.2/containers-thread/CCThread/.dune-keep b/3.2/containers-thread/CCThread/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers-thread/CCThread/Arr/index.html b/3.2/containers-thread/CCThread/Arr/index.html
new file mode 100644
index 00000000..35e1694c
--- /dev/null
+++ b/3.2/containers-thread/CCThread/Arr/index.html
@@ -0,0 +1,2 @@
+
+Arr (containers-thread.CCThread.Arr)
\ No newline at end of file
diff --git a/3.2/containers-thread/CCThread/Barrier/index.html b/3.2/containers-thread/CCThread/Barrier/index.html
new file mode 100644
index 00000000..880573ed
--- /dev/null
+++ b/3.2/containers-thread/CCThread/Barrier/index.html
@@ -0,0 +1,2 @@
+
+Barrier (containers-thread.CCThread.Barrier)
wait b waits for barrier b to be activated by activate b. All threads calling this wait until activate b is called. If b is already activated, wait b does nothing.
activated b returns true iff activate b was called, and reset b was not called since. In other words, activated b = true means wait b will not block.
\ No newline at end of file
diff --git a/3.2/containers-thread/CCThread/index.html b/3.2/containers-thread/CCThread/index.html
new file mode 100644
index 00000000..e5627a22
--- /dev/null
+++ b/3.2/containers-thread/CCThread/index.html
@@ -0,0 +1,2 @@
+
+CCThread (containers-thread.CCThread)
\ No newline at end of file
diff --git a/3.2/containers-thread/CCTimer/.dune-keep b/3.2/containers-thread/CCTimer/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers-thread/CCTimer/index.html b/3.2/containers-thread/CCTimer/index.html
new file mode 100644
index 00000000..3710dd7a
--- /dev/null
+++ b/3.2/containers-thread/CCTimer/index.html
@@ -0,0 +1,2 @@
+
+CCTimer (containers-thread.CCTimer)
Module CCTimer
Event timer
Used to be part of CCFuture.
since
0.16
type t
A scheduler for events. It runs in its own thread.
\ No newline at end of file
diff --git a/3.2/containers-thread/index.html b/3.2/containers-thread/index.html
new file mode 100644
index 00000000..ea2305cc
--- /dev/null
+++ b/3.2/containers-thread/index.html
@@ -0,0 +1,2 @@
+
+index (containers-thread.index)
containers-thread index
Library containers-thread
This library exposes the following toplevel modules:
\ No newline at end of file
diff --git a/3.2/containers/CCArray/.dune-keep b/3.2/containers/CCArray/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers/CCArray/Infix/index.html b/3.2/containers/CCArray/Infix/index.html
new file mode 100644
index 00000000..f03cc566
--- /dev/null
+++ b/3.2/containers/CCArray/Infix/index.html
@@ -0,0 +1,2 @@
+
+Infix (containers.CCArray.Infix)
\ No newline at end of file
diff --git a/3.2/containers/CCArray/index.html b/3.2/containers/CCArray/index.html
new file mode 100644
index 00000000..934b1a8f
--- /dev/null
+++ b/3.2/containers/CCArray/index.html
@@ -0,0 +1,2 @@
+
+CCArray (containers.CCArray)
Module CCArray
Array utils
type'a iter = ('a-> unit)-> unit
Fast internal iterator.
since
2.8
type'a gen = unit ->'a option
type'a equal = 'a->'a-> bool
type'a ord = 'a->'a-> int
type'a random_gen = Stdlib.Random.State.t ->'a
type'a printer = Stdlib.Format.formatter ->'a-> unit
sort_indices f a returns a new array b, with the same length as a, such that b.(i) is the index at which the i-th element of sorted f a appears in a. a is not modified.
In other words, map (fun i -> a.(i)) (sort_indices f a) = sorted f a. sort_indices yields the inverse permutation of sort_ranking.
sort_ranking f a returns a new array b, with the same length as a, such that b.(i) is the index at which the i-th element of a appears in sorted f a. a is not modified.
In other words, map (fun i -> (sorted f a).(i)) (sort_ranking f a) = a. sort_ranking yields the inverse permutation of sort_indices.
In the absence of duplicate elements in a, we also have lookup_exn a.(i) (sorted a) = (sorted_ranking a).(i).
lookup ~cmp key a lookups the index of some key key in a sorted array a. Undefined behavior if the array a is not sorted wrt ~cmp. Complexity: O(log (n)) (dichotomic search).
returns
None if the key key is not present, or Some i (i the index of the key) otherwise.
val bsearch : cmp:('a->'a-> int)->'a->'at->[ `All_lower | `All_bigger| `Just_after of int| `Empty| `At of int ]
bsearch ~cmp key a finds the index of the object key in the array a, provided a is sorted using cmp. If the array is not sorted, the result is not specified (may raise Invalid_argument).
Complexity: O(log n) where n is the length of the array a (dichotomic search).
returns
`At i if cmp a.(i) key = 0 (for some i).
`All_lower if all elements of a are lower than key.
`All_bigger if all elements of a are bigger than key.
for_all2 f [|a1; …; an|] [|b1; …; bn|] is true if each pair of elements ai bi satisfies the predicate f. That is, it returns (f a1 b1) && (f a2 b2) && … && (f an bn).
raises Invalid_argument
if arrays have distinct lengths. Allow different types.
exists2 f [|a1; …; an|] [|b1; …; bn|] is true if any pair of elements ai bi satisfies the predicate f. That is, it returns (f a1 b1) || (f a2 b2) || … || (f an bn).
raises Invalid_argument
if arrays have distinct lengths. Allow different types.
since
0.20
val fold2 : ('acc->'a->'b->'acc)->'acc->'at->'bt->'acc
fold2 f init a b fold on two arrays a and b stepwise. It computes f (… (f init a1 b1) …) an bn.
shuffle a randomly shuffles the array a, in place.
val shuffle_with : Stdlib.Random.State.t ->'at-> unit
shuffle_with rs a randomly shuffles the array a (like shuffle) but a specialized random state rs is used to control the random numbers being produced during shuffling (for reproducibility).
to_iter a returns an iter of the elements of an array a. The input array a is shared with the sequence and modification of it will result in modification of the iterator.
to_seq a returns a Seq.t of the elements of an array a. The input array a is shared with the sequence and modification of it will result in modification of the sequence. Renamed from to_std_seq since 3.0.
pp ~pp_start ~pp_stop ~pp_sep pp_item ppf a formats the array a on ppf. Each element is formatted with pp_item, pp_start is called at the beginning, pp_stop is called at the end, pp_sep is called between each elements. By defaults pp_start and pp_stop does nothing and pp_sep defaults to (fun out -> Format.fprintf out ",@ ").
pp_i ~pp_start ~pp_stop ~pp_sep pp_item ppf a prints the array a on ppf. The printing function pp_item is giving both index and element. pp_start is called at the beginning, pp_stop is called at the end, pp_sep is called between each elements. By defaults pp_start and pp_stop does nothing and pp_sep defaults to (fun out -> Format.fprintf out ",@ ").
filter_map f [|a1; …; an|] calls (f a1) … (f an) and returns an array b consisting of all elements bi such as f ai = Some bi. When f returns None, the corresponding element of a is discarded.
\ No newline at end of file
diff --git a/3.2/containers/CCArray/module-type-MONO_ARRAY/index.html b/3.2/containers/CCArray/module-type-MONO_ARRAY/index.html
new file mode 100644
index 00000000..cb930c56
--- /dev/null
+++ b/3.2/containers/CCArray/module-type-MONO_ARRAY/index.html
@@ -0,0 +1,2 @@
+
+MONO_ARRAY (containers.CCArray.MONO_ARRAY)
\ No newline at end of file
diff --git a/3.2/containers/CCArrayLabels/.dune-keep b/3.2/containers/CCArrayLabels/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers/CCArrayLabels/Floatarray/index.html b/3.2/containers/CCArrayLabels/Floatarray/index.html
new file mode 100644
index 00000000..91ba08c2
--- /dev/null
+++ b/3.2/containers/CCArrayLabels/Floatarray/index.html
@@ -0,0 +1,2 @@
+
+Floatarray (containers.CCArrayLabels.Floatarray)
Module CCArrayLabels.Floatarray
val create : int -> floatarray
val length : floatarray -> int
val get : floatarray -> int -> float
val set : floatarray -> int -> float -> unit
val unsafe_get : floatarray -> int -> float
val unsafe_set : floatarray -> int -> float -> unit
\ No newline at end of file
diff --git a/3.2/containers/CCArrayLabels/Infix/index.html b/3.2/containers/CCArrayLabels/Infix/index.html
new file mode 100644
index 00000000..f5d19cfe
--- /dev/null
+++ b/3.2/containers/CCArrayLabels/Infix/index.html
@@ -0,0 +1,2 @@
+
+Infix (containers.CCArrayLabels.Infix)
\ No newline at end of file
diff --git a/3.2/containers/CCArrayLabels/index.html b/3.2/containers/CCArrayLabels/index.html
new file mode 100644
index 00000000..8f038fa1
--- /dev/null
+++ b/3.2/containers/CCArrayLabels/index.html
@@ -0,0 +1,2 @@
+
+CCArrayLabels (containers.CCArrayLabels)
Module CCArrayLabels
Array utils
type'a iter = ('a-> unit)-> unit
Fast internal iterator.
since
2.8
type'a gen = unit ->'a option
type'a equal = 'a->'a-> bool
type'a ord = 'a->'a-> int
type'a random_gen = Stdlib.Random.State.t ->'a
type'a printer = Stdlib.Format.formatter ->'a-> unit
sorted ~f a makes a copy of a and sorts it with f.
since
1.0
val sort_indices : f:('a->'a-> int)->'at->int array
sort_indices ~f a returns a new array b, with the same length as a, such that b.(i) is the index at which the i-th element of sorted f a appears in a. a is not modified.
In other words, map (fun i -> a.(i)) (sort_indices f a) = sorted f a. sort_indices yields the inverse permutation of sort_ranking.
since
1.0
val sort_ranking : f:('a->'a-> int)->'at->int array
sort_ranking ~f a returns a new array b, with the same length as a, such that b.(i) is the index at which the i-th element of a appears in sorted f a. a is not modified.
In other words, map (fun i -> (sorted f a).(i)) (sort_ranking f a) = a. sort_ranking yields the inverse permutation of sort_indices.
In the absence of duplicate elements in a, we also have lookup_exn a.(i) (sorted a) = (sorted_ranking a).(i).
lookup ~cmp ~key a lookups the index of some key key in a sorted array a. Undefined behavior if the array a is not sorted wrt cmp. Complexity: O(log (n)) (dichotomic search).
returns
None if the key key is not present, or Some i (i the index of the key) otherwise.
val bsearch : cmp:('a->'a-> int)->key:'a->'at->[ `All_lower | `All_bigger| `Just_after of int| `Empty| `At of int ]
bsearch ~cmp ~key a finds the index of the object key in the array a, provided a is sorted using cmp. If the array is not sorted, the result is not specified (may raise Invalid_argument).
Complexity: O(log n) where n is the length of the array a (dichotomic search).
returns
`At i if cmp a.(i) key = 0 (for some i).
`All_lower if all elements of a are lower than key.
`All_bigger if all elements of a are bigger than key.
for_all2 ~f [|a1; …; an|] [|b1; …; bn|] is true if each pair of elements ai bi satisfies the predicate f. That is, it returns (f a1 b1) && (f a2 b2) && … && (f an bn).
raises Invalid_argument
if arrays have distinct lengths. Allow different types.
exists2 ~f [|a1; …; an|] [|b1; …; bn|] is true if any pair of elements ai bi satisfies the predicate f. That is, it returns (f a1 b1) || (f a2 b2) || … || (f an bn).
raises Invalid_argument
if arrays have distinct lengths. Allow different types.
since
0.20
val fold2 : f:('acc->'a->'b->'acc)->init:'acc->'at->'bt->'acc
fold2 ~f ~init a b fold on two arrays a and b stepwise. It computes f (… (f init a1 b1) …) an bn.
shuffle a randomly shuffles the array a, in place.
val shuffle_with : Stdlib.Random.State.t ->'at-> unit
shuffle_with rs a randomly shuffles the array a (like shuffle) but a specialized random state rs is used to control the random numbers being produced during shuffling (for reproducibility).
to_iter a returns an iter of the elements of an array a. The input array a is shared with the sequence and modification of it will result in modification of the iterator.
to_seq a returns a Seq.t of the elements of an array a. The input array a is shared with the sequence and modification of it will result in modification of the sequence. Renamed from to_std_seq since 3.0.
pp ~pp_start ~pp_stop ~pp_sep pp_item ppf a formats the array a on ppf. Each element is formatted with pp_item, pp_start is called at the beginning, pp_stop is called at the end, pp_sep is called between each elements. By defaults pp_start and pp_stop does nothing and pp_sep defaults to (fun out -> Format.fprintf out ",@ ").
pp_i ~pp_start ~pp_stop ~pp_sep pp_item ppf a prints the array a on ppf. The printing function pp_item is giving both index and element. pp_start is called at the beginning, pp_stop is called at the end, pp_sep is called between each elements. By defaults pp_start and pp_stop does nothing and pp_sep defaults to (fun out -> Format.fprintf out ",@ ").
map2 ~f a b applies function f to all elements of a and b, and builds an array with the results returned by f: [| f a.(0) b.(0); …; f a.(length a - 1) b.(length b - 1)|].
filter_map ~f [|a1; …; an|] calls (f a1) … (f an) and returns an array b consisting of all elements bi such as f ai = Some bi. When f returns None, the corresponding element of a is discarded.
val monoid_product : f:('a->'b->'c)->'at->'bt->'ct
monoid_product ~f a b passes all combinaisons of tuples from the two arrays a and b to the function f.
\ No newline at end of file
diff --git a/3.2/containers/CCArrayLabels/module-type-MONO_ARRAY/index.html b/3.2/containers/CCArrayLabels/module-type-MONO_ARRAY/index.html
new file mode 100644
index 00000000..c32563aa
--- /dev/null
+++ b/3.2/containers/CCArrayLabels/module-type-MONO_ARRAY/index.html
@@ -0,0 +1,2 @@
+
+MONO_ARRAY (containers.CCArrayLabels.MONO_ARRAY)
\ No newline at end of file
diff --git a/3.2/containers/CCBool/.dune-keep b/3.2/containers/CCBool/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers/CCBool/index.html b/3.2/containers/CCBool/index.html
new file mode 100644
index 00000000..1ed83790
--- /dev/null
+++ b/3.2/containers/CCBool/index.html
@@ -0,0 +1,2 @@
+
+CCBool (containers.CCBool)
\ No newline at end of file
diff --git a/3.2/containers/CCChar/.dune-keep b/3.2/containers/CCChar/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers/CCChar/index.html b/3.2/containers/CCChar/index.html
new file mode 100644
index 00000000..6c36227f
--- /dev/null
+++ b/3.2/containers/CCChar/index.html
@@ -0,0 +1,2 @@
+
+CCChar (containers.CCChar)
The comparison function for characters, with the same specification as Stdlib.compare. Along with the type t, this function compare allows the module Char to be passed as argument to the functors Set.Make and Map.Make.
\ No newline at end of file
diff --git a/3.2/containers/CCEither/.dune-keep b/3.2/containers/CCEither/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers/CCEither/index.html b/3.2/containers/CCEither/index.html
new file mode 100644
index 00000000..83a37381
--- /dev/null
+++ b/3.2/containers/CCEither/index.html
@@ -0,0 +1,2 @@
+
+CCEither (containers.CCEither)
Module CCEither
Either Monad
Module that is compatible with Either form OCaml 4.12 but can be use with any ocaml version compatible with container
since
3.2
type'a iter = ('a-> unit)-> unit
type'a equal = 'a->'a-> bool
type'a ord = 'a->'a-> int
type'a printer = Stdlib.Format.formatter ->'a-> unit
\ No newline at end of file
diff --git a/3.2/containers/CCEqual/.dune-keep b/3.2/containers/CCEqual/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers/CCEqual/Infix/index.html b/3.2/containers/CCEqual/Infix/index.html
new file mode 100644
index 00000000..8e0956ce
--- /dev/null
+++ b/3.2/containers/CCEqual/Infix/index.html
@@ -0,0 +1,2 @@
+
+Infix (containers.CCEqual.Infix)
\ No newline at end of file
diff --git a/3.2/containers/CCEqual/index.html b/3.2/containers/CCEqual/index.html
new file mode 100644
index 00000000..7c3c782f
--- /dev/null
+++ b/3.2/containers/CCEqual/index.html
@@ -0,0 +1,2 @@
+
+CCEqual (containers.CCEqual)
Module CCEqual
Equality Combinators
type'a t = 'a->'a-> bool
Equality function. Must be transitive, symmetric, and reflexive.
map f eq is the equality function that, given objects x and y, projects x and y using f (e.g. using a record field) and then compares those projections with eq. Example: map fst int compares values of type (int * 'a) by their first component.
\ No newline at end of file
diff --git a/3.2/containers/CCEqualLabels/.dune-keep b/3.2/containers/CCEqualLabels/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers/CCEqualLabels/Infix/index.html b/3.2/containers/CCEqualLabels/Infix/index.html
new file mode 100644
index 00000000..ee7290da
--- /dev/null
+++ b/3.2/containers/CCEqualLabels/Infix/index.html
@@ -0,0 +1,2 @@
+
+Infix (containers.CCEqualLabels.Infix)
\ No newline at end of file
diff --git a/3.2/containers/CCEqualLabels/index.html b/3.2/containers/CCEqualLabels/index.html
new file mode 100644
index 00000000..ec97dac7
--- /dev/null
+++ b/3.2/containers/CCEqualLabels/index.html
@@ -0,0 +1,2 @@
+
+CCEqualLabels (containers.CCEqualLabels)
Module CCEqualLabels
Equality Combinators
type'a t = 'a->'a-> bool
Equality function. Must be transitive, symmetric, and reflexive.
map f eq is the equality function that, given objects x and y, projects x and y using f (e.g. using a record field) and then compares those projections with eq. Example: map fst int compares values of type (int * 'a) by their first component.
\ No newline at end of file
diff --git a/3.2/containers/CCFloat/.dune-keep b/3.2/containers/CCFloat/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers/CCFloat/Infix/index.html b/3.2/containers/CCFloat/Infix/index.html
new file mode 100644
index 00000000..f471c7a1
--- /dev/null
+++ b/3.2/containers/CCFloat/Infix/index.html
@@ -0,0 +1,2 @@
+
+Infix (containers.CCFloat.Infix)
\ No newline at end of file
diff --git a/3.2/containers/CCFloat/index.html b/3.2/containers/CCFloat/index.html
new file mode 100644
index 00000000..15ee6cf9
--- /dev/null
+++ b/3.2/containers/CCFloat/index.html
@@ -0,0 +1,2 @@
+
+CCFloat (containers.CCFloat)
\ No newline at end of file
diff --git a/3.2/containers/CCFormat/.dune-keep b/3.2/containers/CCFormat/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers/CCFormat/Dump/index.html b/3.2/containers/CCFormat/Dump/index.html
new file mode 100644
index 00000000..fe5a112e
--- /dev/null
+++ b/3.2/containers/CCFormat/Dump/index.html
@@ -0,0 +1,2 @@
+
+Dump (containers.CCFormat.Dump)
\ No newline at end of file
diff --git a/3.2/containers/CCFormat/Infix/index.html b/3.2/containers/CCFormat/Infix/index.html
new file mode 100644
index 00000000..1568fb3d
--- /dev/null
+++ b/3.2/containers/CCFormat/Infix/index.html
@@ -0,0 +1,2 @@
+
+Infix (containers.CCFormat.Infix)
\ No newline at end of file
diff --git a/3.2/containers/CCFormat/index.html b/3.2/containers/CCFormat/index.html
new file mode 100644
index 00000000..77b0b56d
--- /dev/null
+++ b/3.2/containers/CCFormat/index.html
@@ -0,0 +1,14 @@
+
+CCFormat (containers.CCFormat)
val ksprintf : (string ->'a)->('b, unit, string, 'a) Stdlib.format4->'b
val kasprintf : (string ->'a)->('b, formatter, unit, 'a) Stdlib.format4->'b
val bprintf : Stdlib.Buffer.t ->('a, formatter, unit) Stdlib.format->'a
val kprintf : (string ->'a)->('b, unit, string, 'a) Stdlib.format4->'b
val set_all_formatter_output_functions : out:(string -> int -> int -> unit)->flush:(unit -> unit)->newline:(unit -> unit)->spaces:(int -> unit)-> unit
val get_all_formatter_output_functions : unit ->(string -> int -> int -> unit) * (unit -> unit) * (unit -> unit) * (int -> unit)
val pp_set_all_formatter_output_functions : formatter->out:(string -> int -> int -> unit)->flush:(unit -> unit)->newline:(unit -> unit)->spaces:(int -> unit)-> unit
val pp_get_all_formatter_output_functions : formatter-> unit ->(string -> int -> int -> unit) * (unit -> unit) * (unit -> unit) * (int -> unit)
Add functions to support color tags to the given formatter.
since
0.15
val set_color_default : bool -> unit
set_color_default b enables color handling on the standard formatters (stdout, stderr) if b = true as well as on sprintf formatters; it disables the color handling if b = false.
val with_out_chan : Stdlib.out_channel ->(t->'a)->'a
with_out_chan oc f turns oc into a formatter fmt, and call f fmt. Behaves like f fmt from then on, but whether the call to f fails or returns, fmt is flushed before the call terminates.
\ No newline at end of file
diff --git a/3.2/containers/CCFun/.dune-keep b/3.2/containers/CCFun/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers/CCFun/Infix/index.html b/3.2/containers/CCFun/Infix/index.html
new file mode 100644
index 00000000..21b89767
--- /dev/null
+++ b/3.2/containers/CCFun/Infix/index.html
@@ -0,0 +1,2 @@
+
+Infix (containers.CCFun.Infix)
Module CCFun.Infix
val (|>) : 'a->('a->'b)->'b
x |> f is the same as f x. A 'pipe' operator.
val (@@) : ('a->'b)->'a->'b
f @@ x is the same as f x, but right-associative.
since
0.5
val (%>) : ('a->'b)->('b->'c)->'a->'c
(f %> g) x or (%>) f g x is g (f x). Alias to compose.
val (%) : ('b->'c)->('a->'b)->'a->'c
(f % g) x or (%) f g x is f (g x). Mathematical composition.
\ No newline at end of file
diff --git a/3.2/containers/CCFun/Monad/argument-1-X/index.html b/3.2/containers/CCFun/Monad/argument-1-X/index.html
new file mode 100644
index 00000000..94d09491
--- /dev/null
+++ b/3.2/containers/CCFun/Monad/argument-1-X/index.html
@@ -0,0 +1,2 @@
+
+1-X (containers.CCFun.Monad.1-X)
Parameter Monad.1-X
type t
\ No newline at end of file
diff --git a/3.2/containers/CCFun/Monad/index.html b/3.2/containers/CCFun/Monad/index.html
new file mode 100644
index 00000000..05f49aac
--- /dev/null
+++ b/3.2/containers/CCFun/Monad/index.html
@@ -0,0 +1,2 @@
+
+Monad (containers.CCFun.Monad)
\ No newline at end of file
diff --git a/3.2/containers/CCFun/index.html b/3.2/containers/CCFun/index.html
new file mode 100644
index 00000000..6f31f57d
--- /dev/null
+++ b/3.2/containers/CCFun/index.html
@@ -0,0 +1,4 @@
+
+CCFun (containers.CCFun)
val protect : finally:(unit -> unit)->(unit ->'a)->'a
exceptionFinally_raisedof exn
val compose : ('a->'b)->('b->'c)->'a->'c
compose f g x is g (f x). Composition.
val compose_binop : ('a->'b)->('b->'b->'c)->'a->'a->'c
compose_binop f g is fun x y -> g (f x) (f y). Example (partial order): List.sort (compose_binop fst CCInt.compare) [1, true; 2, false; 1, false].
since
0.6
val curry : (('a * 'b)->'c)->'a->'b->'c
curry f x y is f (x,y). Convert a function which accepts a pair of arguments into a function which accepts two arguments.
val uncurry : ('a->'b->'c)->('a * 'b)->'c
uncurry f (x,y) is f x y. Convert a function which accepts a two arguments into a function which accepts a pair of arguments.
val tap : ('a->_)->'a->'a
tap f x evaluates f x, discards it, then returns x. Useful in a pipeline, for instance:
CCArray.(1 -- 10)
+|> tap CCArray.shuffle
+|> tap @@ CCArray.sort Stdlib.compare
val lexicographic : ('a->'a-> int)->('a->'a-> int)->'a->'a-> int
Lexicographic combination of comparison functions.
val finally : h:(unit ->_)->f:(unit ->'a)->'a
finally ~h f calls f () and returns its result. If it raises, the same exception is raised; in any case, h () is called after f () terminates. If h () raises an exception, then this exception will be passed on and any exception that may have been raised by f () is lost.
val finally1 : h:(unit ->_)->('a->'b)->'a->'b
finally1 ~h f x is the same as f x, but after the computation, h () is called whether f x rose an exception or not. If h () raises an exception, then this exception will be passed on and any exception that may have been raised by f () is lost.
since
0.16
val finally2 : h:(unit ->_)->('a->'b->'c)->'a->'b->'c
finally2 ~h f x y is the same as f x y, but after the computation, h () is called whether f x y rose an exception or not. If h () raises an exception, then this exception will be passed on and any exception that may have been raised by f () is lost.
since
0.16
val opaque_identity : 'a->'a
opaque_identity x is like x, but prevents Flambda from using x's definition for optimizing it. (flambda is an optimization/inlining pass in OCaml >= 4.03).
since
0.18
val iterate : int ->('a->'a)->'a->'a
iterate n f is f iterated n times. That is to say, iterate 0 f x is x, iterate 1 f x is f x, iterate 2 f x is f (f x), etc.
(f %> g) x or (%>) f g x is g (f x). Alias to compose.
val (%) : ('b->'c)->('a->'b)->'a->'c
(f % g) x or (%) f g x is f (g x). Mathematical composition.
Monad
Functions with a fixed domain are monads in their codomain.
moduleMonad : functor (X : sig ... end) ->sig ... end
\ No newline at end of file
diff --git a/3.2/containers/CCHash/.dune-keep b/3.2/containers/CCHash/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers/CCHash/index.html b/3.2/containers/CCHash/index.html
new file mode 100644
index 00000000..addb9539
--- /dev/null
+++ b/3.2/containers/CCHash/index.html
@@ -0,0 +1,2 @@
+
+CCHash (containers.CCHash)
Always return 0. Useful for ignoring elements. Example: Hash.(pair string const0) will map pairs ("a", 1) and ("a", 2) to the same hash, but not the same as ("b", 1).
\ No newline at end of file
diff --git a/3.2/containers/CCHashtbl/.dune-keep b/3.2/containers/CCHashtbl/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers/CCHashtbl/Poly/index.html b/3.2/containers/CCHashtbl/Poly/index.html
new file mode 100644
index 00000000..c35e1329
--- /dev/null
+++ b/3.2/containers/CCHashtbl/Poly/index.html
@@ -0,0 +1,2 @@
+
+Poly (containers.CCHashtbl.Poly)
Module CCHashtbl.Poly
val get : ('a, 'b) Stdlib.Hashtbl.t->'a->'b option
get tbl k finds a binding for the key k if present, or returns None if no value is found. Safe version of Hashtbl.find.
val get_or : ('a, 'b) Stdlib.Hashtbl.t->'a->default:'b->'b
get_or tbl k ~default returns the value associated to k if present, and returns default otherwise (if k doesn't belong in tbl).
val keys_list : ('a, 'b) Stdlib.Hashtbl.t->'a list
keys_list tbl is the list of keys in tbl. If the key is in the Hashtable multiple times, all occurrences will be returned.
since
0.8
val values_list : ('a, 'b) Stdlib.Hashtbl.t->'b list
values_list tbl is the list of values in tbl.
since
0.8
val map_list : ('a->'b->'c)->('a, 'b) Stdlib.Hashtbl.t->'c list
map_list f tbl maps on a tbl's items. Collect into a list.
val incr : ?by:int->('a, int) Stdlib.Hashtbl.t->'a-> unit
incr ?by tbl x increments or initializes the counter associated with x. If get tbl x = None, then after update, get tbl x = Some 1; otherwise, if get tbl x = Some n, now get tbl x = Some (n+1).
parameter by
if specified, the int value is incremented by by rather than 1.
since
0.16
val decr : ?by:int->('a, int) Stdlib.Hashtbl.t->'a-> unit
decr ?by tbl x is like incr but subtract 1 (or the value of by). If the value reaches 0, the key is removed from the table. This does nothing if the key is not already present in the table.
since
0.16
val to_iter : ('a, 'b) Stdlib.Hashtbl.t->('a * 'b)iter
Iterate on bindings in the table.
since
2.8
val add_list : ('a, 'b list) Stdlib.Hashtbl.t->'a->'b-> unit
add_list tbl x y adds y to the list x is bound to. If x is not bound, it becomes bound to y.
since
0.16
val add_iter : ('a, 'b) Stdlib.Hashtbl.t->('a * 'b)iter-> unit
Add the corresponding pairs to the table, using Hashtbl.add.
since
2.8
val add_seq : ('a, 'b) Stdlib.Hashtbl.t->('a * 'b) Stdlib.Seq.t-> unit
Add the corresponding pairs to the table, using Hashtbl.add. Renamed from add_std_seq since 3.0.
since
3.0
val of_iter : ('a * 'b)iter->('a, 'b) Stdlib.Hashtbl.t
From the given bindings, added in order.
since
2.8
val of_seq : ('a * 'b) Stdlib.Seq.t->('a, 'b) Stdlib.Hashtbl.t
From the given bindings, added in order. Renamed from of_std_seq since 3.0.
since
3.0
val add_iter_count : ('a, int) Stdlib.Hashtbl.t->'aiter-> unit
add_iter_count tbl i increments the count of each element of i by calling incr. This is useful for counting how many times each element of i occurs.
since
2.8
val add_seq_count : ('a, int) Stdlib.Hashtbl.t->'a Stdlib.Seq.t-> unit
add_seq_count tbl seq increments the count of each element of seq by calling incr. This is useful for counting how many times each element of seq occurs. Renamed from add_std_seq_count since 3.0.
since
3.0
val of_iter_count : 'aiter->('a, int) Stdlib.Hashtbl.t
Like add_seq_count, but allocates a new table and returns it.
since
2.8
val of_seq_count : 'a Stdlib.Seq.t->('a, int) Stdlib.Hashtbl.t
Like add_seq_count, but allocates a new table and returns it. Renamed from of_std_seq_count since 3.0.
since
3.0
val to_list : ('a, 'b) Stdlib.Hashtbl.t->('a * 'b) list
to_list tbl returns the list of (key,value) bindings (order unspecified).
val of_list : ('a * 'b) list->('a, 'b) Stdlib.Hashtbl.t
of_list l builds a table from the given list l of bindings k_i -> v_i, added in order using add. If a key occurs several times, it will be added several times, and the visible binding will be the last one.
val update : ('a, 'b) Stdlib.Hashtbl.t->f:('a->'b option->'b option)->k:'a-> unit
update tbl ~f ~k updates key k by calling f k (Some v) if k was mapped to v, or f k None otherwise; if the call returns None then k is removed/stays removed, if the call returns Some v' then the binding k -> v' is inserted using Hashtbl.replace.
since
0.14
val get_or_add : ('a, 'b) Stdlib.Hashtbl.t->f:('a->'b)->k:'a->'b
get_or_add tbl ~k ~f finds and returns the binding of k in tbl, if it exists. If it does not exist, then f k is called to obtain a new binding v; k -> v is added to tbl and v is returned.
pp ~pp_start ~pp_stop ~pp_sep ~pp arrow pp_k pp_v returns a table printer given a pp_k printer for individual key and a pp_v printer for individual value. pp_start and pp_stop control the opening and closing delimiters, by default print nothing. pp_sep control the separator between binding. pp_arrow control the arrow between the key and value. Renamed from print since 2.0.
since
0.13
\ No newline at end of file
diff --git a/3.2/containers/CCHashtbl/index.html b/3.2/containers/CCHashtbl/index.html
new file mode 100644
index 00000000..e079544d
--- /dev/null
+++ b/3.2/containers/CCHashtbl/index.html
@@ -0,0 +1,2 @@
+
+CCHashtbl (containers.CCHashtbl)
Module CCHashtbl
Extension to the standard Hashtbl
since
0.4
type'a iter = ('a-> unit)-> unit
Fast internal iterator.
since
2.8
type'a eq = 'a->'a-> bool
type'a hash = 'a-> int
type'a printer = Stdlib.Format.formatter ->'a-> unit
val keys_list : ('a, 'b) Stdlib.Hashtbl.t->'a list
keys_list tbl is the list of keys in tbl. If the key is in the Hashtable multiple times, all occurrences will be returned.
since
0.8
val values_list : ('a, 'b) Stdlib.Hashtbl.t->'b list
values_list tbl is the list of values in tbl.
since
0.8
val map_list : ('a->'b->'c)->('a, 'b) Stdlib.Hashtbl.t->'c list
map_list f tbl maps on a tbl's items. Collect into a list.
val incr : ?by:int->('a, int) Stdlib.Hashtbl.t->'a-> unit
incr ?by tbl x increments or initializes the counter associated with x. If get tbl x = None, then after update, get tbl x = Some 1; otherwise, if get tbl x = Some n, now get tbl x = Some (n+1).
parameter by
if specified, the int value is incremented by by rather than 1.
since
0.16
val decr : ?by:int->('a, int) Stdlib.Hashtbl.t->'a-> unit
decr ?by tbl x is like incr but subtract 1 (or the value of by). If the value reaches 0, the key is removed from the table. This does nothing if the key is not already present in the table.
since
0.16
val to_iter : ('a, 'b) Stdlib.Hashtbl.t->('a * 'b)iter
Iterate on bindings in the table.
since
2.8
val add_list : ('a, 'b list) Stdlib.Hashtbl.t->'a->'b-> unit
add_list tbl x y adds y to the list x is bound to. If x is not bound, it becomes bound to y.
since
0.16
val add_iter : ('a, 'b) Stdlib.Hashtbl.t->('a * 'b)iter-> unit
Add the corresponding pairs to the table, using Hashtbl.add.
since
2.8
val add_seq : ('a, 'b) Stdlib.Hashtbl.t->('a * 'b) Stdlib.Seq.t-> unit
Add the corresponding pairs to the table, using Hashtbl.add. Renamed from add_std_seq since 3.0.
since
3.0
val of_iter : ('a * 'b)iter->('a, 'b) Stdlib.Hashtbl.t
From the given bindings, added in order.
since
2.8
val of_seq : ('a * 'b) Stdlib.Seq.t->('a, 'b) Stdlib.Hashtbl.t
From the given bindings, added in order. Renamed from of_std_seq since 3.0.
since
3.0
val add_iter_count : ('a, int) Stdlib.Hashtbl.t->'aiter-> unit
add_iter_count tbl i increments the count of each element of i by calling incr. This is useful for counting how many times each element of i occurs.
since
2.8
val add_seq_count : ('a, int) Stdlib.Hashtbl.t->'a Stdlib.Seq.t-> unit
add_seq_count tbl seq increments the count of each element of seq by calling incr. This is useful for counting how many times each element of seq occurs. Renamed from add_std_seq_count since 3.0.
since
3.0
val of_iter_count : 'aiter->('a, int) Stdlib.Hashtbl.t
Like add_seq_count, but allocates a new table and returns it.
since
2.8
val of_seq_count : 'a Stdlib.Seq.t->('a, int) Stdlib.Hashtbl.t
Like add_seq_count, but allocates a new table and returns it. Renamed from of_std_seq_count since 3.0.
since
3.0
val to_list : ('a, 'b) Stdlib.Hashtbl.t->('a * 'b) list
to_list tbl returns the list of (key,value) bindings (order unspecified).
val of_list : ('a * 'b) list->('a, 'b) Stdlib.Hashtbl.t
of_list l builds a table from the given list l of bindings k_i -> v_i, added in order using add. If a key occurs several times, it will be added several times, and the visible binding will be the last one.
val update : ('a, 'b) Stdlib.Hashtbl.t->f:('a->'b option->'b option)->k:'a-> unit
update tbl ~f ~k updates key k by calling f k (Some v) if k was mapped to v, or f k None otherwise; if the call returns None then k is removed/stays removed, if the call returns Some v' then the binding k -> v' is inserted using Hashtbl.replace.
since
0.14
val get_or_add : ('a, 'b) Stdlib.Hashtbl.t->f:('a->'b)->k:'a->'b
get_or_add tbl ~k ~f finds and returns the binding of k in tbl, if it exists. If it does not exist, then f k is called to obtain a new binding v; k -> v is added to tbl and v is returned.
pp ~pp_start ~pp_stop ~pp_sep ~pp arrow pp_k pp_v returns a table printer given a pp_k printer for individual key and a pp_v printer for individual value. pp_start and pp_stop control the opening and closing delimiters, by default print nothing. pp_sep control the separator between binding. pp_arrow control the arrow between the key and value. Renamed from print since 2.0.
module Make : functor (X : Stdlib.Hashtbl.HashedType) ->SwithtypeMake.key = X.t andtype'a Make.t = 'a Stdlib.Hashtbl.Make(X).t
\ No newline at end of file
diff --git a/3.2/containers/CCHashtbl/module-type-S/index.html b/3.2/containers/CCHashtbl/module-type-S/index.html
new file mode 100644
index 00000000..85525084
--- /dev/null
+++ b/3.2/containers/CCHashtbl/module-type-S/index.html
@@ -0,0 +1,2 @@
+
+S (containers.CCHashtbl.S)
incr ?by tbl x increments or initializes the counter associated with x. If get tbl x = None, then after update, get tbl x = Some 1; otherwise, if get tbl x = Some n, now get tbl x = Some (n+1).
parameter by
if specified, the int value is incremented by by rather than 1.
decr ?by tbl x is like incr but subtract 1 (or the value of by). If the value reaches 0, the key is removed from the table. This does nothing if the key is not already present in the table.
add_iter_count tbl i increments the count of each element of i by calling incr. This is useful for counting how many times each element of i occurs.
since
2.8
val add_seq_count : int t->key Stdlib.Seq.t-> unit
add_seq_count tbl seq increments the count of each element of seq by calling incr. This is useful for counting how many times each element of seq occurs. Renamed from of_std_seq_count since 3.0.
of_list l builds a table from the given list l of bindings k_i -> v_i, added in order using add. If a key occurs several times, it will be added several times, and the visible binding will be the last one.
val update : 'at->f:(key->'a option->'a option)->k:key-> unit
update tbl ~f ~k updates key k by calling f k (Some v) if k was mapped to v, or f k None otherwise; if the call returns None then k is removed/stays removed, if the call returns Some v' then the binding k -> v' is inserted using Hashtbl.replace.
get_or_add tbl ~k ~f finds and returns the binding of k in tbl, if it exists. If it does not exist, then f k is called to obtain a new binding v; k -> v is added to tbl and v is returned.
pp ~pp_start ~pp_stop ~pp_sep ~pp arrow pp_k pp_v returns a table printer given a pp_k printer for individual key and a pp_v printer for individual value. pp_start and pp_stop control the opening and closing delimiters, by default print nothing. pp_sep control the separator between binding. pp_arrow control the arrow between the key and value. Renamed from print since 2.0.
since
0.13
\ No newline at end of file
diff --git a/3.2/containers/CCHeap/.dune-keep b/3.2/containers/CCHeap/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers/CCHeap/Make/argument-1-E/index.html b/3.2/containers/CCHeap/Make/argument-1-E/index.html
new file mode 100644
index 00000000..d7c356a0
--- /dev/null
+++ b/3.2/containers/CCHeap/Make/argument-1-E/index.html
@@ -0,0 +1,2 @@
+
+1-E (containers.CCHeap.Make.1-E)
leq x y shall return true iff x is lower or equal to y.
\ No newline at end of file
diff --git a/3.2/containers/CCHeap/Make/index.html b/3.2/containers/CCHeap/Make/index.html
new file mode 100644
index 00000000..6d82fe24
--- /dev/null
+++ b/3.2/containers/CCHeap/Make/index.html
@@ -0,0 +1,2 @@
+
+Make (containers.CCHeap.Make)
delete_all eq x h uses eq to find all x in h and delete them. If h do not contain x then it return h. The difference with filter is that delete_all stops as soon as it enters a subtree whose root is bigger than the element.
pp ?pp_start ?pp_stop ?pp_sep ppf h prints h on ppf. Each element is formatted with ppf, pp_start is called at the beginning, pp_stop is called at the end, pp_sep is called between each elements. By defaults pp_start and pp_stop does nothing and pp_sep defaults to (fun out -> Format.fprintf out ",@ "). Renamed from print since 2.0
since
0.16
\ No newline at end of file
diff --git a/3.2/containers/CCHeap/Make_from_compare/argument-1-E/index.html b/3.2/containers/CCHeap/Make_from_compare/argument-1-E/index.html
new file mode 100644
index 00000000..5c8044f0
--- /dev/null
+++ b/3.2/containers/CCHeap/Make_from_compare/argument-1-E/index.html
@@ -0,0 +1,2 @@
+
+1-E (containers.CCHeap.Make_from_compare.1-E)
compare a b shall return a negative value if a is smaller than b, 0 if a and b are equal or a positive value if a is greater than b
\ No newline at end of file
diff --git a/3.2/containers/CCHeap/Make_from_compare/index.html b/3.2/containers/CCHeap/Make_from_compare/index.html
new file mode 100644
index 00000000..0e57a15e
--- /dev/null
+++ b/3.2/containers/CCHeap/Make_from_compare/index.html
@@ -0,0 +1,2 @@
+
+Make_from_compare (containers.CCHeap.Make_from_compare)
Module CCHeap.Make_from_compare
A convenient version of Make that take a TOTAL_ORD instead of a partially ordered module. It allow to directly pass modules that implement compare without implementing leq explicitly
delete_all eq x h uses eq to find all x in h and delete them. If h do not contain x then it return h. The difference with filter is that delete_all stops as soon as it enters a subtree whose root is bigger than the element.
pp ?pp_start ?pp_stop ?pp_sep ppf h prints h on ppf. Each element is formatted with ppf, pp_start is called at the beginning, pp_stop is called at the end, pp_sep is called between each elements. By defaults pp_start and pp_stop does nothing and pp_sep defaults to (fun out -> Format.fprintf out ",@ "). Renamed from print since 2.0
since
0.16
\ No newline at end of file
diff --git a/3.2/containers/CCHeap/index.html b/3.2/containers/CCHeap/index.html
new file mode 100644
index 00000000..6a26a5a2
--- /dev/null
+++ b/3.2/containers/CCHeap/index.html
@@ -0,0 +1,2 @@
+
+CCHeap (containers.CCHeap)
Module CCHeap
Leftist Heaps
Implementation following Okasaki's book.
type'a iter = ('a-> unit)-> unit
Fast internal iterator.
since
2.8
type'a gen = unit ->'a option
type'a ktree = unit ->[ `Nil | `Node of 'a * 'aktree list ]
type'a printer = Stdlib.Format.formatter ->'a-> unit
A convenient version of Make that take a TOTAL_ORD instead of a partially ordered module. It allow to directly pass modules that implement compare without implementing leq explicitly
\ No newline at end of file
diff --git a/3.2/containers/CCHeap/module-type-PARTIAL_ORD/index.html b/3.2/containers/CCHeap/module-type-PARTIAL_ORD/index.html
new file mode 100644
index 00000000..fc46a915
--- /dev/null
+++ b/3.2/containers/CCHeap/module-type-PARTIAL_ORD/index.html
@@ -0,0 +1,2 @@
+
+PARTIAL_ORD (containers.CCHeap.PARTIAL_ORD)
leq x y shall return true iff x is lower or equal to y.
\ No newline at end of file
diff --git a/3.2/containers/CCHeap/module-type-S/index.html b/3.2/containers/CCHeap/module-type-S/index.html
new file mode 100644
index 00000000..2c7b0a91
--- /dev/null
+++ b/3.2/containers/CCHeap/module-type-S/index.html
@@ -0,0 +1,2 @@
+
+S (containers.CCHeap.S)
delete_all eq x h uses eq to find all x in h and delete them. If h do not contain x then it return h. The difference with filter is that delete_all stops as soon as it enters a subtree whose root is bigger than the element.
pp ?pp_start ?pp_stop ?pp_sep ppf h prints h on ppf. Each element is formatted with ppf, pp_start is called at the beginning, pp_stop is called at the end, pp_sep is called between each elements. By defaults pp_start and pp_stop does nothing and pp_sep defaults to (fun out -> Format.fprintf out ",@ "). Renamed from print since 2.0
since
0.16
\ No newline at end of file
diff --git a/3.2/containers/CCHeap/module-type-TOTAL_ORD/index.html b/3.2/containers/CCHeap/module-type-TOTAL_ORD/index.html
new file mode 100644
index 00000000..7d47b45b
--- /dev/null
+++ b/3.2/containers/CCHeap/module-type-TOTAL_ORD/index.html
@@ -0,0 +1,2 @@
+
+TOTAL_ORD (containers.CCHeap.TOTAL_ORD)
compare a b shall return a negative value if a is smaller than b, 0 if a and b are equal or a positive value if a is greater than b
\ No newline at end of file
diff --git a/3.2/containers/CCIO/.dune-keep b/3.2/containers/CCIO/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers/CCIO/File/index.html b/3.2/containers/CCIO/File/index.html
new file mode 100644
index 00000000..8b55e7e8
--- /dev/null
+++ b/3.2/containers/CCIO/File/index.html
@@ -0,0 +1,2 @@
+
+File (containers.CCIO.File)
Module CCIO.File
type t = string
A file should be represented by its absolute path, but currently this is not enforced.
Like read_dir (with recurse=true), this function walks a directory recursively and yields either files or directories. Is a file anything that doesn't satisfy is_directory (including symlinks, etc.)
raises Sys_error
in case of error (e.g. permission denied) during iteration.
val with_temp : ?temp_dir:string->prefix:string->suffix:string->(string ->'a)->'a
with_temp ~prefix ~suffix f will call f with the name of a new temporary file (located in temp_dir). After f returns, the file is deleted. Best to be used in combination with with_out. See Filename.temp_file.
since
0.17
\ No newline at end of file
diff --git a/3.2/containers/CCIO/index.html b/3.2/containers/CCIO/index.html
new file mode 100644
index 00000000..3b5a2f4b
--- /dev/null
+++ b/3.2/containers/CCIO/index.html
@@ -0,0 +1,22 @@
+
+CCIO (containers.CCIO)
Module CCIO
IO Utils
Simple utilities to deal with basic Input/Output tasks in a resource-safe way. For advanced IO tasks, the user is advised to use something like Lwt or Async, that are far more comprehensive.
Examples:
obtain the list of lines of a file:
# let l = CCIO.(with_in "/tmp/some_file" read_lines_l);;
transfer one file into another:
# CCIO.(
+ with_in "/tmp/input"
+ (fun ic ->
+ let chunks = read_chunks_gen ic in
+ with_out ~flags:[Open_binary; Open_creat] ~mode:0o644 "/tmp/output"
+ (fun oc ->
+ write_gen oc chunks
+ )
+ )
+ ) ;;
Note that the lifetime of an IO generator is tied to the underlying channel. In the example above, chunks must be used in the scope of ic. This will raise an error:
val with_in : ?mode:int->?flags:Stdlib.open_flag list-> string ->(Stdlib.in_channel ->'a)->'a
Open an input file with the given optional flag list, calls the function on the input channel. When the function raises or returns, the channel is closed.
raises Sys_error
in case of error (same as open_in and close_in).
parameter flags
opening flags (default [Open_text]). Open_rdonly is used in any cases.
val read_chunks_gen : ?size:int-> Stdlib.in_channel ->string gen
Read the channel's content into chunks of size size. NOTE the generator must be used within the lifetime of the channel, see warning at the top of the file.
val read_line : Stdlib.in_channel ->string option
Read a line from the channel. Returns None if the input is terminated. The "\n" is removed from the line.
val read_lines_gen : Stdlib.in_channel ->string gen
Read all lines. The generator should be traversed only once. NOTE the generator must be used within the lifetime of the channel, see warning at the top of the file.
val read_lines_l : Stdlib.in_channel ->string list
Read all lines into a list.
val read_all : ?size:int-> Stdlib.in_channel -> string
Read the whole channel into a buffer, then converted into a string.
parameter size
the internal buffer size.
since
0.7
val read_all_bytes : ?size:int-> Stdlib.in_channel -> Stdlib.Bytes.t
Read the whole channel into a mutable byte array.
parameter size
the internal buffer size.
since
0.12
Output
val with_out : ?mode:int->?flags:Stdlib.open_flag list-> string ->(Stdlib.out_channel ->'a)->'a
tee funs gen behaves like gen, but each element is given to every function f in funs at the time the element is produced. The returned generator will raise any exception that f raises
\ No newline at end of file
diff --git a/3.2/containers/CCInt/.dune-keep b/3.2/containers/CCInt/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers/CCInt/Infix/index.html b/3.2/containers/CCInt/Infix/index.html
new file mode 100644
index 00000000..3d97b309
--- /dev/null
+++ b/3.2/containers/CCInt/Infix/index.html
@@ -0,0 +1,2 @@
+
+Infix (containers.CCInt.Infix)
\ No newline at end of file
diff --git a/3.2/containers/CCInt/index.html b/3.2/containers/CCInt/index.html
new file mode 100644
index 00000000..760e337b
--- /dev/null
+++ b/3.2/containers/CCInt/index.html
@@ -0,0 +1,2 @@
+
+CCInt (containers.CCInt)
pow base exponent returns base raised to the power of exponent. pow x y = x^y for positive integers x and y. Raises Invalid_argument if x = y = 0 or y < 0.
range_by ~step i j iterates on integers from i to j included, where the difference between successive elements is step. Use a negative step for a decreasing list.
\ No newline at end of file
diff --git a/3.2/containers/CCInt32/.dune-keep b/3.2/containers/CCInt32/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers/CCInt32/Infix/index.html b/3.2/containers/CCInt32/Infix/index.html
new file mode 100644
index 00000000..d403d40c
--- /dev/null
+++ b/3.2/containers/CCInt32/Infix/index.html
@@ -0,0 +1,2 @@
+
+Infix (containers.CCInt32.Infix)
x / y is the integer quotient of x and y. Integer division. Raise Division_by_zero if the second argument y is zero. This division rounds the real quotient of its arguments towards zero, as specified for Stdlib.(/).
x mod y is the integer remainder of x / y. If y <> zero, the result of x mod y satisfies the following properties: zero <= x mod y < abs y and x = ((x / y) * y) + (x mod y). If y = 0, x mod y raises Division_by_zero.
x lsr y shifts x to the right by y bits. This is a logical shift: zeroes are inserted in the vacated bits regardless of the sign of x. The result is unspecified if y < 0 or y >= 32.
x asr y shifts x to the right by y bits. This is an arithmetic shift: the sign bit of x is replicated and inserted in the vacated bits. The result is unspecified if y < 0 or y >= 32.
\ No newline at end of file
diff --git a/3.2/containers/CCInt32/index.html b/3.2/containers/CCInt32/index.html
new file mode 100644
index 00000000..5d9c5a82
--- /dev/null
+++ b/3.2/containers/CCInt32/index.html
@@ -0,0 +1,2 @@
+
+CCInt32 (containers.CCInt32)
Module CCInt32
Int32
Helpers for 32-bit integers.
This module provides operations on the type int32 of signed 32-bit integers. Unlike the built-in int type, the type int32 is guaranteed to be exactly 32-bit wide on all platforms. All arithmetic operations over int32 are taken modulo 232.
Performance notice: values of type int32 occupy more memory space than values of type int, and arithmetic operations on int32 are generally slower than those on int. Use int32 only when the application requires exact 32-bit arithmetic.
pow base exponent returns base raised to the power of exponent. pow x y = x^y for positive integers x and y. Raises Invalid_argument if x = y = 0 or y < 0.
range_by ~step i j iterates on integers from i to j included, where the difference between successive elements is step. Use a negative step for a decreasing list.
of_string_exn s converts the given string s into a 32-bit integer. Alias to Int32.of_string. The string is read in decimal (by default, or if the string begins with 0u) or in hexadecimal, octal or binary if the string begins with 0x, 0o or 0b respectively.
The 0u prefix reads the input as an unsigned integer in the range [0, 2*CCInt32.max_int+1]. If the input exceeds CCInt32.max_int it is converted to the signed integer CCInt32.min_int + input - CCInt32.max_int - 1.
The _ (underscore) character can appear anywhere in the string and is ignored. Raise Failure "Int32.of_string" if the given string is not a valid representation of an integer, or if the integer represented exceeds the range of integers representable in type int32.
x / y is the integer quotient of x and y. Integer division. Raise Division_by_zero if the second argument y is zero. This division rounds the real quotient of its arguments towards zero, as specified for Stdlib.(/).
x mod y is the integer remainder of x / y. If y <> zero, the result of x mod y satisfies the following properties: zero <= x mod y < abs y and x = ((x / y) * y) + (x mod y). If y = 0, x mod y raises Division_by_zero.
x lsr y shifts x to the right by y bits. This is a logical shift: zeroes are inserted in the vacated bits regardless of the sign of x. The result is unspecified if y < 0 or y >= 32.
x asr y shifts x to the right by y bits. This is an arithmetic shift: the sign bit of x is replicated and inserted in the vacated bits. The result is unspecified if y < 0 or y >= 32.
\ No newline at end of file
diff --git a/3.2/containers/CCInt64/.dune-keep b/3.2/containers/CCInt64/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers/CCInt64/Infix/index.html b/3.2/containers/CCInt64/Infix/index.html
new file mode 100644
index 00000000..1da1bdab
--- /dev/null
+++ b/3.2/containers/CCInt64/Infix/index.html
@@ -0,0 +1,2 @@
+
+Infix (containers.CCInt64.Infix)
x / y is the integer quotient of x and y. Integer division. Raise Division_by_zero if the second argument y is zero. This division rounds the real quotient of its arguments towards zero, as specified for Stdlib.(/).
x mod y is the integer remainder of x / y. If y <> zero, the result of x mod y satisfies the following properties: zero <= x mod y < abs y and x = ((x / y) * y) + (x mod y). If y = 0, x mod y raises Division_by_zero.
x lsr y shifts x to the right by y bits. This is a logical shift: zeroes are inserted in the vacated bits regardless of the sign of x. The result is unspecified if y < 0 or y >= 64.
x asr y shifts x to the right by y bits. This is an arithmetic shift: the sign bit of x is replicated and inserted in the vacated bits. The result is unspecified if y < 0 or y >= 64.
\ No newline at end of file
diff --git a/3.2/containers/CCInt64/index.html b/3.2/containers/CCInt64/index.html
new file mode 100644
index 00000000..481daca3
--- /dev/null
+++ b/3.2/containers/CCInt64/index.html
@@ -0,0 +1,2 @@
+
+CCInt64 (containers.CCInt64)
Module CCInt64
Int64
Helpers for 64-bit integers.
This module provides operations on the type int64 of signed 64-bit integers. Unlike the built-in int type, the type int64 is guaranteed to be exactly 64-bit wide on all platforms. All arithmetic operations over int64 are taken modulo 264.
Performance notice: values of type int64 occupy more memory space than values of type int, and arithmetic operations on int64 are generally slower than those on int. Use int64 only when the application requires exact 64-bit arithmetic.
pow base exponent returns base raised to the power of exponent. pow x y = x^y for positive integers x and y. Raises Invalid_argument if x = y = 0 or y < 0.
range_by ~step i j iterates on integers from i to j included, where the difference between successive elements is step. Use a negative step for a decreasing list.
of_string_exn s converts the given string s into a 64-bit integer. Alias to Int64.of_string. The string is read in decimal (by default, or if the string begins with 0u) or in hexadecimal, octal or binary if the string begins with 0x, 0o or 0b respectively.
The 0u prefix reads the input as an unsigned integer in the range [0, 2*CCInt64.max_int+1]. If the input exceeds CCInt64.max_int it is converted to the signed integer CCInt64.min_int + input - CCInt64.max_int - 1.
The _ (underscore) character can appear anywhere in the string and is ignored. Raise Failure "Int64.of_string" if the given string is not a valid representation of an integer, or if the integer represented exceeds the range of integers representable in type int64.
x / y is the integer quotient of x and y. Integer division. Raise Division_by_zero if the second argument y is zero. This division rounds the real quotient of its arguments towards zero, as specified for Stdlib.(/).
x mod y is the integer remainder of x / y. If y <> zero, the result of x mod y satisfies the following properties: zero <= x mod y < abs y and x = ((x / y) * y) + (x mod y). If y = 0, x mod y raises Division_by_zero.
x lsr y shifts x to the right by y bits. This is a logical shift: zeroes are inserted in the vacated bits regardless of the sign of x. The result is unspecified if y < 0 or y >= 64.
x asr y shifts x to the right by y bits. This is an arithmetic shift: the sign bit of x is replicated and inserted in the vacated bits. The result is unspecified if y < 0 or y >= 64.
\ No newline at end of file
diff --git a/3.2/containers/CCList/.dune-keep b/3.2/containers/CCList/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers/CCList/Assoc/index.html b/3.2/containers/CCList/Assoc/index.html
new file mode 100644
index 00000000..4c675bd0
--- /dev/null
+++ b/3.2/containers/CCList/Assoc/index.html
@@ -0,0 +1,2 @@
+
+Assoc (containers.CCList.Assoc)
Module CCList.Assoc
type('a, 'b) t = ('a * 'b) list
val get : eq:('a->'a-> bool)->'a->('a, 'b)t->'b option
get ~eq k alist returns Some v if the given key k is present into alist, or None if not present.
val get_exn : eq:('a->'a-> bool)->'a->('a, 'b)t->'b
get_exn ~eq k alist returns v if the element k is present into alist. Like get, but unsafe.
raises Not_found
if the element is not present.
val set : eq:('a->'a-> bool)->'a->'b->('a, 'b)t->('a, 'b)t
set ~eq k v alist adds the binding k, v into the list alist (erase it if already present).
val mem : ?eq:('a->'a-> bool)->'a->('a, _)t-> bool
mem ?eq k alist returns true iff k is a key in alist.
since
0.16
val update : eq:('a->'a-> bool)->f:('b option->'b option)->'a->('a, 'b)t->('a, 'b)t
update ~eq ~f k alist updates alist on the key k, by calling f (get k alist) and removing k if it returns None, mapping k to v' if it returns Some v'.
since
0.16
val remove : eq:('a->'a-> bool)->'a->('a, 'b)t->('a, 'b)t
remove ~eq k alist returns the alist without the first pair with key k, if any.
since
0.17
\ No newline at end of file
diff --git a/3.2/containers/CCList/Infix/index.html b/3.2/containers/CCList/Infix/index.html
new file mode 100644
index 00000000..788c5d25
--- /dev/null
+++ b/3.2/containers/CCList/Infix/index.html
@@ -0,0 +1,9 @@
+
+Infix (containers.CCList.Infix)
(and&) is combine_shortest. It allows to perform a synchronized product between two lists, stopping gently at the shortest. Usable both with let+ and let*.
# let f xs ys zs =
+ let+ x = xs
+ and& y = ys
+ and& z = zs in
+ x + y + z;;
+val f : int list -> int list -> int list -> int list = <fun>
+# f [1;2] [5;6;7] [10;10];;
+- : int list = [16; 18]
since
3.1
\ No newline at end of file
diff --git a/3.2/containers/CCList/Ref/index.html b/3.2/containers/CCList/Ref/index.html
new file mode 100644
index 00000000..f601269a
--- /dev/null
+++ b/3.2/containers/CCList/Ref/index.html
@@ -0,0 +1,2 @@
+
+Ref (containers.CCList.Ref)
push_list rlist l adds elements of the list l at the beginning of the list ref rlist. Elements at the end of the list l will be at the beginning of the list ref rlist.
\ No newline at end of file
diff --git a/3.2/containers/CCList/Traverse/argument-1-M/index.html b/3.2/containers/CCList/Traverse/argument-1-M/index.html
new file mode 100644
index 00000000..6a8cc2ff
--- /dev/null
+++ b/3.2/containers/CCList/Traverse/argument-1-M/index.html
@@ -0,0 +1,2 @@
+
+1-M (containers.CCList.Traverse.1-M)
\ No newline at end of file
diff --git a/3.2/containers/CCList/Traverse/index.html b/3.2/containers/CCList/Traverse/index.html
new file mode 100644
index 00000000..66abf824
--- /dev/null
+++ b/3.2/containers/CCList/Traverse/index.html
@@ -0,0 +1,2 @@
+
+Traverse (containers.CCList.Traverse)
Module CCList.Traverse
Monadic Traverse
This allows the traversal of a 'a t list where _ t is also a monad.
For example, a 'a option list will be traversed by extracting a value from each option, returning Some [x1;…;x_n]; but if one of the option is None then the whole result is None.
Another example is with result: ('a, 'err) result list can be transformed into ('a list, 'err) result by returning the first error, or Ok [x1; …; xn] if all the elements were successful.
This describes the behavior of sequence_m; map_m is a combination of map and sequence_m; map_m_par is like map_m but useful for some pseudo monads like Lwt.
map_m_par f (x :: l) is like map_m but f x and f l are evaluated "in parallel" before combining their result (for instance in Lwt).
Basically, when encoutering x :: tl, this computes f x and map_m_par f tl, and only then is M.(>>=) used to combine the two results into a new list.
\ No newline at end of file
diff --git a/3.2/containers/CCList/index.html b/3.2/containers/CCList/index.html
new file mode 100644
index 00000000..18a722b4
--- /dev/null
+++ b/3.2/containers/CCList/index.html
@@ -0,0 +1,12 @@
+
+CCList (containers.CCList)
Module CCList
Complements to list
type'a iter = ('a-> unit)-> unit
Fast internal iterator.
since
2.8
type'a gen = unit ->'a option
type'a printer = Stdlib.Format.formatter ->'a-> unit
filter p l returns all the elements of the list l that satisfy the predicate p. The order of the elements in the input list l is preserved. Safe version of List.filter.
val fold_map2 : ('acc->'a->'b->'acc * 'c)->'acc->'a list->'b list->'acc * 'c list
fold_map2 f init l1 l2 is to fold_map what List.map2 is to List.map.
raises Invalid_argument
if the lists do not have the same length.
since
0.16
val fold_filter_map : ('acc->'a->'acc * 'b option)->'acc->'a list->'acc * 'b list
fold_filter_map f init l is a fold_left-like function, but also generates a list of output in a way similar to filter_map.
since
0.17
val fold_filter_map_i : ('acc-> int ->'a->'acc * 'b option)->'acc->'a list->'acc * 'b list
fold_filter_map_i f init l is a foldi-like function, but also generates a list of output in a way similar to filter_map.
since
2.8
val fold_flat_map : ('acc->'a->'acc * 'b list)->'acc->'a list->'acc * 'b list
fold_flat_map f init l is a fold_left-like function, but it also maps the list to a list of lists that is then flatten'd.
since
0.14
val fold_flat_map_i : ('acc-> int ->'a->'acc * 'b list)->'acc->'a list->'acc * 'b list
fold_flat_map_i f init l is a fold_left-like function, but it also maps the list to a list of lists that is then flatten'd.
since
2.8
val count : ('a-> bool)->'a list-> int
count p l counts how many elements of l satisfy predicate p.
since
1.5, but only
since
2.2 with labels
val count_true_false : ('a-> bool)->'a list-> int * int
count_true_false p l returns a pair (int1,int2) where int1 is the number of elements in l that satisfy the predicate p, and int2 the number of elements that do not satisfy p.
combine_gen l1 l2 transforms two lists into a gen of pairs. Lazy version of combine. Unlike combine, it does not fail if the lists have different lengths; instead, the output has as many pairs as the smallest input list.
since
1.2, but only
since
2.2 with labels
val combine_shortest : 'a list->'b list->('a * 'b) list
combine_shortest [a1; …; am] [b1; …; bn] is [(a1,b1); …; (am,bm)] if m <= n. Like combine but stops at the shortest list rather than raising.
cartesian_product [[l1]; [l2]; …; [ln]] produces the cartesian product of this list of lists, by returning all the ways of picking one element per sublist. NOTE the order of the returned list is unspecified. For example:
invariant: cartesian_product l = map_product id l.
since
1.2, but only
since
2.2 with labels
val map_product_l : ('a->'b list)->'a list->'b list list
map_product_l f l maps each element of l to a list of objects of type 'b using f. We obtain [l1; l2; …; ln] where length l=n and li : 'b list. Then, it returns all the ways of picking exactly one element per li.
diagonal l returns all pairs of distinct positions of the list l, that is the list of List.nth i l, List.nth j l if i < j.
val partition_map : ('a->[< `Left of 'b| `Right of 'c| `Drop ])->'a list->'b list * 'c list
partition_map f l maps f on l and gather results in lists:
if f x = `Left y, adds y to the first list.
if f x = `Right z, adds z to the second list.
if f x = `Drop, ignores x.
since
0.11
val group_by : ?hash:('a-> int)->?eq:('a->'a-> bool)->'at->'a listt
group_by ?hash ?eq l groups equal elements, regardless of their order of appearance. precondition: for any x and y, if eq x y then hash x=hash y must hold.
since
2.3
val join : join_row:('a->'b->'c option)->'at->'bt->'ct
join ~join_row a b combines every element of a with every element of b using join_row. If join_row returns None, then the two elements do not combine. Assume that b allows for multiple iterations.
since
2.3
val join_by : ?eq:('key->'key-> bool)->?hash:('key-> int)->('a->'key)->('b->'key)->merge:('key->'a->'b->'c option)->'at->'bt->'ct
join_by ?eq ?hash key1 key2 ~merge la lb is a binary operation that takes two sequences a and b, projects their elements resp. with key1 and key2, and combine values (x,y) from (a,b) with the same key using merge. If merge returns None, the combination of values is discarded. precondition: for any x and y, if eq x y then hash x=hash y must hold.
since
2.3
val join_all_by : ?eq:('key->'key-> bool)->?hash:('key-> int)->('a->'key)->('b->'key)->merge:('key->'a list->'b list->'c option)->'at->'bt->'ct
join_all_by ?eq ?hash key1 key2 ~merge la lb is a binary operation that takes two sequences a and b, projects their elements resp. with key1 and key2, and, for each key k occurring in at least one of them:
compute the list l1 of elements of a that map to k
compute the list l2 of elements of b that map to k
call merge k l1 l2. If merge returns None, the combination of values is discarded, otherwise it returns Some c and c is inserted in the result.
since
2.3
val group_join_by : ?eq:('a->'a-> bool)->?hash:('a-> int)->('b->'a)->'at->'bt->('a * 'b list)t
group_join_by ?eq ?hash key la lb associates to every element x of the first sequence, all the elements y of the second sequence such that eq x (key y). Elements of the first sequences without corresponding values in the second one are mapped to [] precondition: for any x and y, if eq x y then hash x=hash y must hold.
since
2.3
val sublists_of_len : ?last:('a list->'a list option)->?offset:int-> int ->'a list->'a list list
sublists_of_len ?last ?offset n l returns sub-lists of l that have length n. By default, these sub-lists are non overlapping: sublists_of_len 2 [1;2;3;4;5;6] returns [1;2]; [3;4]; [5;6].
the number of elements skipped between two consecutive sub-lists. By default it is n. If offset < n, the sub-lists will overlap; if offset > n, some elements will not appear at all.
parameter last
if provided and the last group of elements g is such that length g < n, last g is called. If last g = Some g', g' is appended; otherwise g is dropped. If last = CCOpt.return, it will simply keep the last group. By default, last = fun _ -> None, i.e. the last group is dropped if shorter than n.
chunks n l returns consecutives chunks of size at most n from l. Each item of l will occur in exactly one chunk. Only the last chunk might be of length smaller than n. Invariant: (chunks n l |> List.flatten) = l.
since
3.2
val intersperse : 'a->'a list->'a list
intersperse x l inserts the element x between adjacent elements of the list l.
since
2.1, but only
since
2.2 with labels
val interleave : 'a list->'a list->'a list
interleave [x1…xn] [y1…ym] is [x1;y1;x2;y2;…] and finishes with the suffix of the longest list.
mguard c is pure () if c is true, [] otherwise. This is useful to define a list by comprehension, e.g.:
# let square_even xs =
+ let* x = xs in
+ let* () = mguard (x mod 2 = 0) in
+ return @@ x * x;;
+val square_even : int list -> int list = <fun>
+# square_even [1;2;4;3;5;2];;
+- : int list = [4; 16; 4]
all_some l returns Some l' if all elements of l are of the form Some x, or None otherwise.
since
1.3, but only
since
2.2 with labels
val all_ok : ('a, 'err) Stdlib.resultt->('at, 'err) Stdlib.result
all_ok l returns Ok l' if all elements of l are of the form Ok x, or Error e otherwise (with the first error met).
since
1.3, but only
since
2.2 with labels
val sorted_merge : cmp:('a->'a-> int)->'a list->'a list->'a list
sorted_merge ~cmp l1 l2 merges elements from both sorted list using the given comparison function cmp.
val sort_uniq : cmp:('a->'a-> int)->'a list->'a list
sort_uniq ~cmp l sorts the list l using the given comparison function cmp and remove duplicate elements.
val sorted_merge_uniq : cmp:('a->'a-> int)->'a list->'a list->'a list
sorted_merge_uniq ~cmp l1 l2 merges the sorted lists l1 and l2 and removes duplicates.
since
0.10
val is_sorted : cmp:('a->'a-> int)->'a list-> bool
is_sorted ~cmp l returns true iff l is sorted (according to given order).
parameter cmp
the comparison function.
since
0.17
val sorted_insert : cmp:('a->'a-> int)->?uniq:bool->'a->'a list->'a list
sorted_insert ~cmp ?uniq x l inserts x into l such that, if l was sorted, then sorted_insert x l is sorted too.
parameter uniq
if true and x is already in sorted position in l, then x is not duplicated. Default false (x will be inserted in any case).
since
0.17
val uniq_succ : eq:('a->'a-> bool)->'a list->'a list
uniq_succ ~eq l removes duplicate elements that occur one next to the other. Examples: uniq_succ ~eq:(=) [1;2;1] = [1;2;1]. uniq_succ ~eq:(=) [1;1;2] = [1;2].
since
0.10
val group_succ : eq:('a->'a-> bool)->'a list->'a list list
group_succ ~eq l groups together consecutive elements that are equal according to eq.
mapi f l is like map, but the function f is applied to the index of the element as first argument (counting from 0), and the element itself as second argument.
iteri f l is like iter, but the function f is applied to the index of the element as first argument (counting from 0), and the element itself as second argument.
val iteri2 : (int ->'a->'b-> unit)->'at->'bt-> unit
iteri2 f l1 l2 applies f to the two lists l1 and l2 simultaneously. The integer passed to f indicates the index of element.
foldi f init l is like fold but it also passes in the index of each element, from 0 to length l - 1 as additional argument to the folded function f. Tail-recursive.
val foldi2 : ('c-> int ->'a->'b->'c)->'c->'at->'bt->'c
foldi2 f init l1 l2 folds on the two lists l1 and l2, with index of each element passed to the function f. Computes f(… (f init i_0 l1_0 l2_0) …) i_n l1_n l2_n .
get_at_idx i l returns Some i-th element of the given list l or None if the list l is too short. If the index is negative, it will get element starting from the end of the list l.
set_at_idx i x l replaces the i-th element with x (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.
insert_at_idx i x l inserts x 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.
remove_at_idx i l removes element at given index i. Does nothing if the index is too high. If the index is negative, it will remove element starting from the end of the list.
Set Operators
Those operations maintain the invariant that the list does not contain duplicates (if it already satisfies it).
uniq ~eq l removes duplicates in l w.r.t the equality predicate eq. 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 sort_uniq.
range_by ~step i j iterates on integers from i to j included, where the difference between successive elements is step. Use a negative step for a decreasing list.
assq_opt k alist returns Some v if the given key k is present into alist. Like Assoc.assoc_opt but use physical equality instead of structural equality to compare keys. Safe version of assq.
since
1.5, but only
since
2.0 with labels
val mem_assoc : ?eq:('a->'a-> bool)->'a->('a * _)t-> bool
mem_assoc ?eq k alist returns true iff k is a key in alist. Like Assoc.mem.
since
2.0
val remove_assoc : eq:('a->'a-> bool)->'a->('a * 'b)t->('a * 'b)t
remove_assoc ~eq k alist returns the alist without the first pair with key k, if any. Like Assoc.remove.
of_seq seq builds a list from a given Seq.t. In the result, elements appear in the same order as they did in the source Seq.t. Renamed from of_std_seq since 3.0.
pp ?pp_start ?pp_stop ?pp_sep ppf l prints the contents of a list.
\ No newline at end of file
diff --git a/3.2/containers/CCList/module-type-MONAD/index.html b/3.2/containers/CCList/module-type-MONAD/index.html
new file mode 100644
index 00000000..9ec4c1e0
--- /dev/null
+++ b/3.2/containers/CCList/module-type-MONAD/index.html
@@ -0,0 +1,2 @@
+
+MONAD (containers.CCList.MONAD)
\ No newline at end of file
diff --git a/3.2/containers/CCListLabels/.dune-keep b/3.2/containers/CCListLabels/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers/CCListLabels/Assoc/index.html b/3.2/containers/CCListLabels/Assoc/index.html
new file mode 100644
index 00000000..c2fbdcc5
--- /dev/null
+++ b/3.2/containers/CCListLabels/Assoc/index.html
@@ -0,0 +1,2 @@
+
+Assoc (containers.CCListLabels.Assoc)
Module CCListLabels.Assoc
type('a, 'b) t = ('a * 'b) list
val get : eq:('a->'a-> bool)->'a->('a, 'b)t->'b option
get ~eq k alist returns Some v if the given key k is present into alist, or None if not present.
val get_exn : eq:('a->'a-> bool)->'a->('a, 'b)t->'b
get_exn ~eq k alist returns v if the element k is present into alist. Like get, but unsafe.
raises Not_found
if the element is not present.
val set : eq:('a->'a-> bool)->'a->'b->('a, 'b)t->('a, 'b)t
set ~eq k v alist adds the binding k, v into the list alist (erase it if already present).
val mem : ?eq:('a->'a-> bool)->'a->('a, _)t-> bool
mem ?eq k alist returns true iff k is a key in alist.
since
0.16
val update : eq:('a->'a-> bool)->f:('b option->'b option)->'a->('a, 'b)t->('a, 'b)t
update ~eq ~f k alist updates alist on the key k, by calling f (get alist k) and removing k if it returns None, mapping k to v' if it returns Some v'.
since
0.16
val remove : eq:('a->'a-> bool)->'a->('a, 'b)t->('a, 'b)t
remove ~eq k alist returns the alist without the first pair with key k, if any.
since
0.17
\ No newline at end of file
diff --git a/3.2/containers/CCListLabels/Infix/index.html b/3.2/containers/CCListLabels/Infix/index.html
new file mode 100644
index 00000000..191bf97f
--- /dev/null
+++ b/3.2/containers/CCListLabels/Infix/index.html
@@ -0,0 +1,9 @@
+
+Infix (containers.CCListLabels.Infix)
(and&) is combine_shortest. It allows to perform a synchronized product between two lists, stopping gently at the shortest. Usable both with let+ and let*.
# let f xs ys zs =
+ let+ x = xs
+ and& y = ys
+ and& z = zs in
+ x + y + z;;
+val f : int list -> int list -> int list -> int list = <fun>
+# f [1;2] [5;6;7] [10;10];;
+- : int list = [16; 18]
since
3.1
\ No newline at end of file
diff --git a/3.2/containers/CCListLabels/Ref/index.html b/3.2/containers/CCListLabels/Ref/index.html
new file mode 100644
index 00000000..1825395d
--- /dev/null
+++ b/3.2/containers/CCListLabels/Ref/index.html
@@ -0,0 +1,2 @@
+
+Ref (containers.CCListLabels.Ref)
push_list rlist l adds elements of the list l at the beginning of the list ref rlist. Elements at the end of the list l will be at the beginning of the list ref rlist.
\ No newline at end of file
diff --git a/3.2/containers/CCListLabels/Traverse/argument-1-M/index.html b/3.2/containers/CCListLabels/Traverse/argument-1-M/index.html
new file mode 100644
index 00000000..874ec522
--- /dev/null
+++ b/3.2/containers/CCListLabels/Traverse/argument-1-M/index.html
@@ -0,0 +1,2 @@
+
+1-M (containers.CCListLabels.Traverse.1-M)
\ No newline at end of file
diff --git a/3.2/containers/CCListLabels/Traverse/index.html b/3.2/containers/CCListLabels/Traverse/index.html
new file mode 100644
index 00000000..4e502977
--- /dev/null
+++ b/3.2/containers/CCListLabels/Traverse/index.html
@@ -0,0 +1,2 @@
+
+Traverse (containers.CCListLabels.Traverse)
map_m_par ~f (x :: l) is like map_m but f x and f l are evaluated "in parallel" before combining their result (for instance in Lwt).
\ No newline at end of file
diff --git a/3.2/containers/CCListLabels/index.html b/3.2/containers/CCListLabels/index.html
new file mode 100644
index 00000000..b048d5d2
--- /dev/null
+++ b/3.2/containers/CCListLabels/index.html
@@ -0,0 +1,12 @@
+
+CCListLabels (containers.CCListLabels)
Module CCListLabels
Complements to list
type'a iter = ('a-> unit)-> unit
Fast internal iterator.
since
2.8
type'a gen = unit ->'a option
type'a printer = Stdlib.Format.formatter ->'a-> unit
filter ~f l returns all the elements of the list l that satisfy the predicate f. The order of the elements in the input list l is preserved. Safe version of List.filter.
val fold_map2 : f:('acc->'a->'b->'acc * 'c)->init:'acc->'a list->'b list->'acc * 'c list
fold_map2 ~f ~init l1 l2 is to fold_map what List.map2 is to List.map.
raises Invalid_argument
if the lists do not have the same length.
since
0.16
val fold_filter_map : f:('acc->'a->'acc * 'b option)->init:'acc->'a list->'acc * 'b list
fold_filter_map ~f ~init l is a fold_left-like function, but also generates a list of output in a way similar to filter_map.
since
0.17
val fold_filter_map_i : f:('acc-> int ->'a->'acc * 'b option)->init:'acc->'a list->'acc * 'b list
fold_filter_map_i ~f ~init l is a foldi-like function, but also generates a list of output in a way similar to filter_map.
since
2.8
val fold_flat_map : f:('acc->'a->'acc * 'b list)->init:'acc->'a list->'acc * 'b list
fold_flat_map ~f ~init l is a fold_left-like function, but it also maps the list to a list of lists that is then flatten'd.
since
0.14
val fold_flat_map_i : f:('acc-> int ->'a->'acc * 'b list)->init:'acc->'a list->'acc * 'b list
fold_flat_map_i ~f ~init l is a fold_left-like function, but it also maps the list to a list of lists that is then flatten'd.
since
2.8
val count : f:('a-> bool)->'a list-> int
count ~f l counts how many elements of l satisfy predicate f.
since
1.5, but only
since
2.2 with labels
val count_true_false : f:('a-> bool)->'a list-> int * int
count_true_false ~f l returns a pair (int1,int2) where int1 is the number of elements in l that satisfy the predicate f, and int2 the number of elements that do not satisfy f.
combine_gen l1 l2 transforms two lists into a gen of pairs. Lazy version of combine. Unlike combine, it does not fail if the lists have different lengths; instead, the output has as many pairs as the smallest input list.
since
1.2, but only
since
2.2 with labels
val combine_shortest : 'a list->'b list->('a * 'b) list
combine_shortest [a1; …; am] [b1; …; bn] is [(a1,b1); …; (am,bm)] if m <= n. Like combine but stops at the shortest list rather than raising.
cartesian_product [[l1];[l2]; …; [ln]] produces the cartesian product of this list of lists, by returning all the ways of picking one element per sublist. NOTE the order of the returned list is unspecified. For example:
invariant: cartesian_product l = map_product id l.
since
1.2, but only
since
2.2 with labels
val map_product_l : f:('a->'b list)->'a list->'b list list
map_product_l ~f l maps each element of l to a list of objects of type 'b using f. We obtain [l1; l2; …; ln] where length l=n and li : 'b list. Then, it returns all the ways of picking exactly one element per li.
diagonal l returns all pairs of distinct positions of the list l, that is the list of List.nth i l, List.nth j l if i < j.
val partition_map : f:('a->[< `Left of 'b| `Right of 'c| `Drop ])->'a list->'b list * 'c list
partition_map ~f l maps f on l and gather results in lists:
if f x = `Left y, adds y to the first list.
if f x = `Right z, adds z to the second list.
if f x = `Drop, ignores x.
since
0.11
val group_by : ?hash:('a-> int)->?eq:('a->'a-> bool)->'at->'a listt
group_by ?hash ?eq l groups equal elements, regardless of their order of appearance. precondition: for any x and y, if eq x y then hash x = hash y must hold.
since
2.3
val join : join_row:('a->'b->'c option)->'at->'bt->'ct
join ~join_row a b combines every element of a with every element of b using join_row. If join_row returns None, then the two elements do not combine. Assume that b allows for multiple iterations.
since
2.3
val join_by : ?eq:('key->'key-> bool)->?hash:('key-> int)->('a->'key)->('b->'key)->merge:('key->'a->'b->'c option)->'at->'bt->'ct
join_by ?eq ?hash key1 key2 ~merge la lb is a binary operation that takes two sequences a and b, projects their elements resp. with key1 and key2, and combine values (x,y) from (a,b) with the same key using merge. If merge returns None, the combination of values is discarded. precondition: for any x and y, if eq x y then hash x = hash y must hold.
since
2.3
val join_all_by : ?eq:('key->'key-> bool)->?hash:('key-> int)->('a->'key)->('b->'key)->merge:('key->'a list->'b list->'c option)->'at->'bt->'ct
join_all_by ?eq ?hash key1 key2 ~merge la lb is a binary operation that takes two sequences a and b, projects their elements resp. with key1 and key2, and, for each key k occurring in at least one of them:
compute the list l1 of elements of a that map to k
compute the list l2 of elements of b that map to k
call merge k l1 l2. If merge returns None, the combination of values is discarded, otherwise it returns Some c and c is inserted in the result.
since
2.3
val group_join_by : ?eq:('a->'a-> bool)->?hash:('a-> int)->('b->'a)->'at->'bt->('a * 'b list)t
group_join_by ?eq ?hash key la lb associates to every element x of the first sequence, all the elements y of the second sequence such that eq x (key y). Elements of the first sequences without corresponding values in the second one are mapped to [] precondition: for any x and y, if eq x y then hash x = hash y must hold.
since
2.3
val sublists_of_len : ?last:('a list->'a list option)->?offset:int->len:int->'a list->'a list list
sublists_of_len ?last ?offset n l returns sub-lists of l that have length n. By default, these sub-lists are non overlapping: sublists_of_len 2 [1;2;3;4;5;6] returns [1;2]; [3;4]; [5;6].
the number of elements skipped between two consecutive sub-lists. By default it is n. If offset < n, the sub-lists will overlap; if offset > n, some elements will not appear at all.
parameter last
if provided and the last group of elements g is such that length g < n, last g is called. If last g = Some g', g' is appended; otherwise g is dropped. If last = CCOpt.return, it will simply keep the last group. By default, last = fun _ -> None, i.e. the last group is dropped if shorter than n.
chunks n l returns consecutives chunks of size at most n from l. Each item of l will occur in exactly one chunk. Only the last chunk might be of length smaller than n. Invariant: (chunks n l |> List.flatten) = l.
since
3.2
val intersperse : x:'a->'a list->'a list
intersperse ~x l inserts the element x between adjacent elements of the list l.
since
2.1, but only
since
2.2 with labels
val interleave : 'a list->'a list->'a list
interleave [x1…xn] [y1…ym] is [x1,y1,x2,y2,…] and finishes with the suffix of the longest list.
mguard c is pure () if c is true, [] otherwise. This is useful to define a list by comprehension, e.g.:
# let square_even xs =
+ let* x = xs in
+ let* () = mguard (x mod 2 = 0) in
+ return @@ x * x;;
+val square_even : int list -> int list = <fun>
+# square_even [1;2;4;3;5;2];;
+- : int list = [4; 16; 4]
mapi ~f l is like map, but the function f is applied to the index of the element as first argument (counting from 0), and the element itself as second argument.
iteri ~f l is like iter, but the function f is applied to the index of the element as first argument (counting from 0), and the element itself as second argument.
val iteri2 : f:(int ->'a->'b-> unit)->'at->'bt-> unit
iteri2 ~f l1 l2 applies f to the two lists l1 and l2 simultaneously. The integer passed to f indicates the index of element.
raises Invalid_argument
when lists do not have the same length.
since
2.0, but only
since
2.2 with labels
val foldi : f:('b-> int ->'a->'b)->init:'b->'at->'b
foldi ~f ~init l is like fold but it also passes in the index of each element, from 0 to length l - 1 as additional argument to the folded function f. Tail-recursive.
val foldi2 : f:('c-> int ->'a->'b->'c)->init:'c->'at->'bt->'c
foldi2 ~f ~init l1 l2 folds on the two lists l1 and l2, with index of each element passed to the function f. Computes f(… (f init i_0 l1_0 l2_0) …) i_n l1_n l2_n .
get_at_idx i l returns Some i-th element of the given list l or None if the list l is too short. If the index is negative, it will get element starting from the end of the list l.
set_at_idx i x l replaces the i-th element with x (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.
insert_at_idx i x l inserts x 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.
remove_at_idx i l removes element at given index i. Does nothing if the index is too high. If the index is negative, it will remove element starting from the end of the list.
Set Operators
Those operations maintain the invariant that the list does not contain duplicates (if it already satisfies it).
uniq ~eq l removes duplicates in l w.r.t the equality predicate eq. 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 sort_uniq.
range_by ~step i j iterates on integers from i to j included, where the difference between successive elements is step. Use a negative step for a decreasing list.
assq_opt k alist returns Some v if the given key k is present into alist. Like Assoc.assoc_opt but use physical equality instead of structural equality to compare keys. Safe version of assq.
since
1.5, but only
since
2.0 with labels
val mem_assoc : ?eq:('a->'a-> bool)->'a->('a * _)t-> bool
mem_assoc ?eq k alist returns true iff k is a key in alist. Like Assoc.mem.
since
2.0
val remove_assoc : eq:('a->'a-> bool)->'a->('a * 'b)t->('a * 'b)t
remove_assoc ~eq k alist returns the alist without the first pair with key k, if any. Like Assoc.remove.
of_seq seq builds a list from a given Seq.t. In the result, elements appear in the same order as they did in the source Seq.t. Renamed from of_std_seq since 3.0.
pp ?pp_start ?pp_stop ?pp_sep ppf l prints the contents of a list.
\ No newline at end of file
diff --git a/3.2/containers/CCListLabels/module-type-MONAD/index.html b/3.2/containers/CCListLabels/module-type-MONAD/index.html
new file mode 100644
index 00000000..f4d65fb9
--- /dev/null
+++ b/3.2/containers/CCListLabels/module-type-MONAD/index.html
@@ -0,0 +1,2 @@
+
+MONAD (containers.CCListLabels.MONAD)
\ No newline at end of file
diff --git a/3.2/containers/CCMap/.dune-keep b/3.2/containers/CCMap/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers/CCMap/index.html b/3.2/containers/CCMap/index.html
new file mode 100644
index 00000000..390c4aa5
--- /dev/null
+++ b/3.2/containers/CCMap/index.html
@@ -0,0 +1,2 @@
+
+CCMap (containers.CCMap)
Module CCMap
Extensions of Standard Map
Provide useful functions and iterators on Map.S
since
0.5
type'a iter = ('a-> unit)-> unit
Fast internal iterator.
since
2.8
type'a printer = Stdlib.Format.formatter ->'a-> unit
module Make : functor (O : Stdlib.Map.OrderedType) ->Swithtype'a Make.t = 'a Stdlib.Map.Make(O).tandtypeMake.key = O.t
\ No newline at end of file
diff --git a/3.2/containers/CCMap/module-type-S/index.html b/3.2/containers/CCMap/module-type-S/index.html
new file mode 100644
index 00000000..417ffd55
--- /dev/null
+++ b/3.2/containers/CCMap/module-type-S/index.html
@@ -0,0 +1,2 @@
+
+S (containers.CCMap.S)
get_or k m ~default returns the value associated to k if present, and returns default otherwise (if k doesn't belong in m).
since
0.16
val update : key->('a option->'a option)->'at->'at
update k f m calls f (Some v) if find k m = v, otherwise it calls f None. In any case, if the result is Nonek is removed from m, and if the result is Some v' then add k v' m is returned.
find_first f m where f is a monotonically increasing function, returns the binding of m with the lowest key k such that f k, or raises Not_found if no such key exists. See Map.S.find_first.
since
1.5
val find_first_opt : (key-> bool)->'at->(key * 'a) option
find_first_opt f m where f is a monotonically increasing function, returns an option containing the binding of m with the lowest key k such that f k, or None if no such key exists. Safe version of find_first.
since
1.5
val merge_safe : f:(key->[ `Left of 'a| `Right of 'b| `Both of 'a * 'b ]->'c option)->'at->'bt->'ct
merge_safe ~f a b merges the maps a and b together.
of_list l builds a map from the given list l of bindings k_i -> v_i, added in order using add. If a key occurs several times, only its last binding will be present in the result.
pp ?pp_start ?pp_stop ?pp_arrow ?pp_sep pp_key pp_v m pretty-prints the contents of the map.
\ No newline at end of file
diff --git a/3.2/containers/CCMonomorphic/.dune-keep b/3.2/containers/CCMonomorphic/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers/CCMonomorphic/index.html b/3.2/containers/CCMonomorphic/index.html
new file mode 100644
index 00000000..b14cb824
--- /dev/null
+++ b/3.2/containers/CCMonomorphic/index.html
@@ -0,0 +1,2 @@
+
+CCMonomorphic (containers.CCMonomorphic)
Module CCMonomorphic
Shadow unsafe functions and operators from Stdlib
val (=) : int -> int -> bool
val (<>) : int -> int -> bool
val (<) : int -> int -> bool
val (>) : int -> int -> bool
val (<=) : int -> int -> bool
val (>=) : int -> int -> bool
val compare : int -> int -> int
val min : int -> int -> int
val max : int -> int -> int
Infix operators for Floats
val (=.) : float -> float -> bool
since
2.1
val (<>.) : float -> float -> bool
since
2.1
val (<.) : float -> float -> bool
since
2.1
val (>.) : float -> float -> bool
since
2.1
val (<=.) : float -> float -> bool
since
2.1
val (>=.) : float -> float -> bool
since
2.1
Shadow Dangerous Operators
val (==) : [ `Consider_using_CCEqual_physical ]
val (!=) : [ `Consider_using_CCEqual_physical ]
since
2.1
\ No newline at end of file
diff --git a/3.2/containers/CCMonomorphicShims_/.dune-keep b/3.2/containers/CCMonomorphicShims_/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers/CCMonomorphicShims_/index.html b/3.2/containers/CCMonomorphicShims_/index.html
new file mode 100644
index 00000000..e40483b0
--- /dev/null
+++ b/3.2/containers/CCMonomorphicShims_/index.html
@@ -0,0 +1,2 @@
+
+CCMonomorphicShims_ (containers.CCMonomorphicShims_)
Module CCMonomorphicShims_
module Stdlib = Stdlib
\ No newline at end of file
diff --git a/3.2/containers/CCNativeint/.dune-keep b/3.2/containers/CCNativeint/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers/CCNativeint/Infix/index.html b/3.2/containers/CCNativeint/Infix/index.html
new file mode 100644
index 00000000..cf6b3d7b
--- /dev/null
+++ b/3.2/containers/CCNativeint/Infix/index.html
@@ -0,0 +1,2 @@
+
+Infix (containers.CCNativeint.Infix)
x / y is the integer quotient of x and y. Integer division. Raise Division_by_zero if the second argument y is zero. This division rounds the real quotient of its arguments towards zero, as specified for Stdlib.(/).
x mod y is the integer remainder of x / y. If y <> zero, the result of x mod y satisfies the following properties: zero <= x mod y < abs y and x = ((x / y) * y) + (x mod y). If y = 0, x mod y raises Division_by_zero.
x lsl y shifts x to the left by y bits. The result is unspecified if y < 0 or y >= bitsize, where bitsize is 32 on a 32-bit platform and 64 on a 64-bit platform.
x lsr y shifts x to the right by y bits. This is a logical shift: zeroes are inserted in the vacated bits regardless of the sign of x. The result is unspecified if y < 0 or y >= bitsize.
x asr y shifts x to the right by y bits. This is an arithmetic shift: the sign bit of x is replicated and inserted in the vacated bits. The result is unspecified if y < 0 or y >= bitsize.
\ No newline at end of file
diff --git a/3.2/containers/CCNativeint/index.html b/3.2/containers/CCNativeint/index.html
new file mode 100644
index 00000000..070ae152
--- /dev/null
+++ b/3.2/containers/CCNativeint/index.html
@@ -0,0 +1,2 @@
+
+CCNativeint (containers.CCNativeint)
Module CCNativeint
Nativeint
Helpers for processor-native integers
This module provides operations on the type nativeint of signed 32-bit integers (on 32-bit platforms) or signed 64-bit integers (on 64-bit platforms). This integer type has exactly the same width as that of a pointer type in the C compiler. All arithmetic operations over nativeint are taken modulo 232 or 264 depending on the word size of the architecture.
Performance notice: values of type nativeint occupy more memory space than values of type int, and arithmetic operations on nativeint are generally slower than those on int. Use nativeint only when the application requires the extra bit of precision over the int type.
pow base exponent returns base raised to the power of exponent. pow x y = x^y for positive integers x and y. Raises Invalid_argument if x = y = 0 or y < 0.
range_by ~step i j iterates on integers from i to j included, where the difference between successive elements is step. Use a negative step for a decreasing list.
of_string_exn s converts the given string s into a native integer. Alias to Nativeint.of_string. Convert the given string to a native integer. The string is read in decimal (by default, or if the string begins with 0u) or in hexadecimal, octal or binary if the string begins with 0x, 0o or 0b respectively.
The 0u prefix reads the input as an unsigned integer in the range [0, 2*CCNativeint.max_int+1]. If the input exceeds CCNativeint.max_int it is converted to the signed integer CCInt64.min_int + input - CCNativeint.max_int - 1.
Raise Failure "Nativeint.of_string" if the given string is not a valid representation of an integer, or if the integer represented exceeds the range of integers representable in type nativeint.
x / y is the integer quotient of x and y. Integer division. Raise Division_by_zero if the second argument y is zero. This division rounds the real quotient of its arguments towards zero, as specified for Stdlib.(/).
x mod y is the integer remainder of x / y. If y <> zero, the result of x mod y satisfies the following properties: zero <= x mod y < abs y and x = ((x / y) * y) + (x mod y). If y = 0, x mod y raises Division_by_zero.
x lsl y shifts x to the left by y bits. The result is unspecified if y < 0 or y >= bitsize, where bitsize is 32 on a 32-bit platform and 64 on a 64-bit platform.
x lsr y shifts x to the right by y bits. This is a logical shift: zeroes are inserted in the vacated bits regardless of the sign of x. The result is unspecified if y < 0 or y >= bitsize.
x asr y shifts x to the right by y bits. This is an arithmetic shift: the sign bit of x is replicated and inserted in the vacated bits. The result is unspecified if y < 0 or y >= bitsize.
\ No newline at end of file
diff --git a/3.2/containers/CCOpt/.dune-keep b/3.2/containers/CCOpt/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers/CCOpt/Infix/index.html b/3.2/containers/CCOpt/Infix/index.html
new file mode 100644
index 00000000..adc35828
--- /dev/null
+++ b/3.2/containers/CCOpt/Infix/index.html
@@ -0,0 +1,2 @@
+
+Infix (containers.CCOpt.Infix)
\ No newline at end of file
diff --git a/3.2/containers/CCOpt/index.html b/3.2/containers/CCOpt/index.html
new file mode 100644
index 00000000..d6a0f860
--- /dev/null
+++ b/3.2/containers/CCOpt/index.html
@@ -0,0 +1,2 @@
+
+CCOpt (containers.CCOpt)
sequence_l [x1; x2; …; xn] returns Some [y1; y2; …; yn] if every xi is Some yi. Otherwise, if the list contains at least one None, the result is None.
val wrap : ?handler:(exn -> bool)->('a->'b)->'a->'b option
wrap ?handler f x calls f x and returns Some y if f x = y. If f x raises any exception, the result is None. This can be useful to wrap functions such as Map.S.find.
parameter handler
the exception handler, which returns true if the exception is to be caught.
val wrap2 : ?handler:(exn -> bool)->('a->'b->'c)->'a->'b->'c option
wrap2 ?handler f x y is similar to wrap but for binary functions.
to_seq o is o as a sequence Seq.t. Some x is the singleton sequence containing x and None is the empty sequence. Same as Stdlib.Option.to_seq Renamed from to_std_seq since 3.0.
\ No newline at end of file
diff --git a/3.2/containers/CCOrd/.dune-keep b/3.2/containers/CCOrd/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers/CCOrd/Infix/index.html b/3.2/containers/CCOrd/Infix/index.html
new file mode 100644
index 00000000..cfbfe3e1
--- /dev/null
+++ b/3.2/containers/CCOrd/Infix/index.html
@@ -0,0 +1,2 @@
+
+Infix (containers.CCOrd.Infix)
\ No newline at end of file
diff --git a/3.2/containers/CCOrd/index.html b/3.2/containers/CCOrd/index.html
new file mode 100644
index 00000000..d207a271
--- /dev/null
+++ b/3.2/containers/CCOrd/index.html
@@ -0,0 +1,6 @@
+
+CCOrd (containers.CCOrd)
Module CCOrd
Comparisons
type'a t = 'a->'a-> int
Comparison (total ordering) between two elements, that returns an int.
map f ord is the comparison function that, given objects x and y, projects x and y using f (e.g. using a record field) and then compares those projections with ord. Example: map fst CCInt.compare compares values of type (int * 'a) by their first component.
\ No newline at end of file
diff --git a/3.2/containers/CCPair/.dune-keep b/3.2/containers/CCPair/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers/CCPair/index.html b/3.2/containers/CCPair/index.html
new file mode 100644
index 00000000..d7e20df7
--- /dev/null
+++ b/3.2/containers/CCPair/index.html
@@ -0,0 +1,2 @@
+
+CCPair (containers.CCPair)
Print a pair given an optional separator, an optional start and stop and a method for printing each of its elements.
\ No newline at end of file
diff --git a/3.2/containers/CCParse/.dune-keep b/3.2/containers/CCParse/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers/CCParse/Infix/index.html b/3.2/containers/CCParse/Infix/index.html
new file mode 100644
index 00000000..a190f25f
--- /dev/null
+++ b/3.2/containers/CCParse/Infix/index.html
@@ -0,0 +1,2 @@
+
+Infix (containers.CCParse.Infix)
a <|> b tries to parse a, and if a fails without consuming any input, backtracks and tries to parse b, otherwise it fails as a. See try_ to ensure a does not consume anything (but it is best to avoid wrapping large parsers with try_).
a <?> msg behaves like a, but if a fails without consuming any input, it fails with msg instead. Useful as the last choice in a series of <|>: a <|> b <|> c <?> "expected a|b|c".
\ No newline at end of file
diff --git a/3.2/containers/CCParse/U/index.html b/3.2/containers/CCParse/U/index.html
new file mode 100644
index 00000000..c0a1d9f6
--- /dev/null
+++ b/3.2/containers/CCParse/U/index.html
@@ -0,0 +1,2 @@
+
+U (containers.CCParse.U)
Module CCParse.U
val list : ?start:string->?stop:string->?sep:string->'at->'a listt
list p parses a list of p, with the OCaml conventions for start token "", stop token "" and separator ";". Whitespace between items are skipped.
val pair : ?start:string->?stop:string->?sep:string->'at->'bt->('a * 'b)t
Parse a pair using OCaml whitespace conventions. The default is "(a, b)".
val triple : ?start:string->?stop:string->?sep:string->'at->'bt->'ct->('a * 'b * 'c)t
Parse a triple using OCaml whitespace conventions. The default is "(a, b, c)".
\ No newline at end of file
diff --git a/3.2/containers/CCParse/index.html b/3.2/containers/CCParse/index.html
new file mode 100644
index 00000000..c1fa425c
--- /dev/null
+++ b/3.2/containers/CCParse/index.html
@@ -0,0 +1,27 @@
+
+CCParse (containers.CCParse)
Module CCParse
Very Simple Parser Combinators
open CCParse;;
+
+type tree = L of int | N of tree * tree;;
+
+let mk_leaf x = L x
+let mk_node x y = N(x,y)
+
+let ptree = fix @@ fun self ->
+ skip_space *>
+ ( (try_ (char '(') *> (pure mk_node <*> self <*> self) <* char ')')
+ <|>
+ (U.int >|= mk_leaf) )
+;;
+
+parse_string_exn ptree "(1 (2 3))" ;;
+parse_string_exn ptree "((1 2) (3 (4 5)))" ;;
Parse a list of words
open Containers.Parse;;
+let p = U.list ~sep:"," U.word;;
+parse_string_exn p "[abc , de, hello ,world ]";;
Stress Test
This makes a list of 100_000 integers, prints it and parses it back.
let p = CCParse.(U.list ~sep:"," U.int);;
+
+let l = CCList.(1 -- 100_000);;
+let l_printed =
+ CCFormat.(to_string (within "[" "]" (list ~sep:(return ",@,") int))) l;;
+
+let l' = CCParse.parse_string_exn p l_printed;;
+
+assert (l=l');;
a <|> b tries to parse a, and if a fails without consuming any input, backtracks and tries to parse b, otherwise it fails as a. See try_ to ensure a does not consume anything (but it is best to avoid wrapping large parsers with try_).
a <?> msg behaves like a, but if a fails without consuming any input, it fails with msg instead. Useful as the last choice in a series of <|>: a <|> b <|> c <?> "expected a|b|c".
Memoize the parser. memo p will behave like p, but when called in a state (read: position in input) it has already processed, memo p returns a result directly. The implementation uses an underlying hashtable. This can be costly in memory, but improve the run time a lot if there is a lot of backtracking involving p.
\ No newline at end of file
diff --git a/3.2/containers/CCRandom/.dune-keep b/3.2/containers/CCRandom/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers/CCRandom/index.html b/3.2/containers/CCRandom/index.html
new file mode 100644
index 00000000..16b2e66c
--- /dev/null
+++ b/3.2/containers/CCRandom/index.html
@@ -0,0 +1,7 @@
+
+CCRandom (containers.CCRandom)
replicate n g makes a list of n elements which are all generated randomly using g.
val sample_without_duplicates : cmp:('a->'a-> int)-> int ->'at->'a listt
sample_without_replacement n g makes a list of n elements which are all generated randomly using g with the added constraint that none of the generated random values are equal.
retry g calls g until it returns some value, or until the maximum number of retries was reached. If g fails, then it counts for one iteration, and the generator retries.
parameter max:
maximum number of retries. Default 10.
val try_successively : 'a optiont list->'a optiont
try_successively l tries each generator of l, one after the other. If some generator succeeds its result is returned, else the next generator is tried.
a <?> b is a choice operator. It first tries a, and returns its result if successful. If a fails, then b is returned.
val fix : ?sub1:('at->'at) list->?sub2:('at->'at->'at) list->?subn:(int t * ('a listt->'at)) list->base:'at->int t->'at
Recursion combinators, for building recursive values. The integer generator is used to provide fuel. The sub_ generators should use their arguments only once!
Using a random state (possibly the one in argument) run a generator.
\ No newline at end of file
diff --git a/3.2/containers/CCRef/.dune-keep b/3.2/containers/CCRef/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers/CCRef/index.html b/3.2/containers/CCRef/index.html
new file mode 100644
index 00000000..04b02280
--- /dev/null
+++ b/3.2/containers/CCRef/index.html
@@ -0,0 +1,2 @@
+
+CCRef (containers.CCRef)
Module CCRef
References
since
0.9
type'a printer = Stdlib.Format.formatter ->'a-> unit
\ No newline at end of file
diff --git a/3.2/containers/CCResult/.dune-keep b/3.2/containers/CCResult/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers/CCResult/Infix/index.html b/3.2/containers/CCResult/Infix/index.html
new file mode 100644
index 00000000..98facb72
--- /dev/null
+++ b/3.2/containers/CCResult/Infix/index.html
@@ -0,0 +1,2 @@
+
+Infix (containers.CCResult.Infix)
val (>>=) : ('a, 'err)t->('a->('b, 'err)t)->('b, 'err)t
Monadic composition. e >>= f proceeds as f x if e is Ok x or returns e if e is an Error.
val (<*>) : ('a->'b, 'err)t->('a, 'err)t->('b, 'err)t
a <*> b evaluates a and b, and, in case of success, returns Ok (a b). Otherwise, it fails, and the error of a is chosen over the error of b if both fail.
Let operators on OCaml >= 4.08.0, nothing otherwise
\ No newline at end of file
diff --git a/3.2/containers/CCResult/Traverse/argument-1-M/index.html b/3.2/containers/CCResult/Traverse/argument-1-M/index.html
new file mode 100644
index 00000000..8a0004a2
--- /dev/null
+++ b/3.2/containers/CCResult/Traverse/argument-1-M/index.html
@@ -0,0 +1,2 @@
+
+1-M (containers.CCResult.Traverse.1-M)
\ No newline at end of file
diff --git a/3.2/containers/CCResult/Traverse/index.html b/3.2/containers/CCResult/Traverse/index.html
new file mode 100644
index 00000000..9d571c19
--- /dev/null
+++ b/3.2/containers/CCResult/Traverse/index.html
@@ -0,0 +1,2 @@
+
+Traverse (containers.CCResult.Traverse)
val fold_m : ('b->'a->'bM.t)->'b->('a, 'err)t->'bM.t
val map_m : ('a->'bM.t)->('a, 'err)t->('b, 'err)tM.t
val retry_m : int ->(unit ->('a, 'err)tM.t)->('a, 'err list)tM.t
\ No newline at end of file
diff --git a/3.2/containers/CCResult/index.html b/3.2/containers/CCResult/index.html
new file mode 100644
index 00000000..4cf33340
--- /dev/null
+++ b/3.2/containers/CCResult/index.html
@@ -0,0 +1,2 @@
+
+CCResult (containers.CCResult)
Module CCResult
Error Monad
Uses the new "result" type from OCaml 4.03.
since
0.16
type'a iter = ('a-> unit)-> unit
Fast internal iterator.
since
2.8
type'a equal = 'a->'a-> bool
type'a ord = 'a->'a-> int
type'a printer = Stdlib.Format.formatter ->'a-> unit
Basics
typenonrec(+'good, +'bad) result = ('good, 'bad) Stdlib.result =
join t, in case of success, returns Ok o from Ok (Ok o). Otherwise, it fails with Error e where e is the unwrapped error of t.
val both : ('a, 'err)t->('b, 'err)t->('a * 'b, 'err)t
both a b, in case of success, returns Ok (o, o') with the ok values of a and b. Otherwise, it fails, and the error of a is chosen over the error of b if both fail.
val (>>=) : ('a, 'err)t->('a->('b, 'err)t)->('b, 'err)t
Monadic composition. e >>= f proceeds as f x if e is Ok x or returns e if e is an Error.
val (<*>) : ('a->'b, 'err)t->('a, 'err)t->('b, 'err)t
a <*> b evaluates a and b, and, in case of success, returns Ok (a b). Otherwise, it fails, and the error of a is chosen over the error of b if both fail.
Let operators on OCaml >= 4.08.0, nothing otherwise
val flatten_l : ('a, 'err)t list->('a list, 'err)t
Same as map_l id: returns Ok [x1;…;xn] if l=[Ok x1; …; Ok xn], or the first error otherwise.
since
2.7
val map_l : ('a->('b, 'err)t)->'a list->('b list, 'err)t
map_l f [a1; …; an] applies the function f to a1, …, an ,and, in case of success for every element, returns the list of Ok-value. Otherwise, it fails and returns the first error encountered. Tail-recursive.
val fold_l : ('b->'a->('b, 'err)t)->'b->'a list->('b, 'err)t
val fold_iter : ('b->'a->('b, 'err)t)->'b->'aiter->('b, 'err)t
choose l selects a member of l that is a Ok _ value, or returns Error l otherwise, where l is the list of errors.
val retry : int ->(unit ->('a, 'err)t)->('a, 'err list)t
retry n f calls f at most n times, returning the first result of f () that doesn't fail. If f fails n times, retry n f fails with the list of successive errors.
\ No newline at end of file
diff --git a/3.2/containers/CCResult/module-type-MONAD/index.html b/3.2/containers/CCResult/module-type-MONAD/index.html
new file mode 100644
index 00000000..2ef02a62
--- /dev/null
+++ b/3.2/containers/CCResult/module-type-MONAD/index.html
@@ -0,0 +1,2 @@
+
+MONAD (containers.CCResult.MONAD)
\ No newline at end of file
diff --git a/3.2/containers/CCSeq/.dune-keep b/3.2/containers/CCSeq/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers/CCSeq/Infix/index.html b/3.2/containers/CCSeq/Infix/index.html
new file mode 100644
index 00000000..01788143
--- /dev/null
+++ b/3.2/containers/CCSeq/Infix/index.html
@@ -0,0 +1,2 @@
+
+Infix (containers.CCSeq.Infix)
\ No newline at end of file
diff --git a/3.2/containers/CCSeq/Traverse/argument-1-M/index.html b/3.2/containers/CCSeq/Traverse/argument-1-M/index.html
new file mode 100644
index 00000000..be985539
--- /dev/null
+++ b/3.2/containers/CCSeq/Traverse/argument-1-M/index.html
@@ -0,0 +1,2 @@
+
+1-M (containers.CCSeq.Traverse.1-M)
\ No newline at end of file
diff --git a/3.2/containers/CCSeq/Traverse/index.html b/3.2/containers/CCSeq/Traverse/index.html
new file mode 100644
index 00000000..7abbe17d
--- /dev/null
+++ b/3.2/containers/CCSeq/Traverse/index.html
@@ -0,0 +1,2 @@
+
+Traverse (containers.CCSeq.Traverse)
\ No newline at end of file
diff --git a/3.2/containers/CCSeq/index.html b/3.2/containers/CCSeq/index.html
new file mode 100644
index 00000000..b07afe8a
--- /dev/null
+++ b/3.2/containers/CCSeq/index.html
@@ -0,0 +1,2 @@
+
+CCSeq (containers.CCSeq)
uniq eq l returns l but removes consecutive duplicates. Lazy. In other words, if several values that are equal follow one another, only the first of them is kept.
pp ~pp_start ~pp_stop ~pp_sep pp_item ppf s formats the sequence s on ppf. Each element is formatted with pp_item, pp_start is called at the beginning, pp_stop is called at the end, pp_sep is called between each elements. By defaults pp_start and pp_stop does nothing and pp_sep defaults to (fun out -> Format.fprintf out ",@ ").
\ No newline at end of file
diff --git a/3.2/containers/CCSeq/module-type-MONAD/index.html b/3.2/containers/CCSeq/module-type-MONAD/index.html
new file mode 100644
index 00000000..d40f6285
--- /dev/null
+++ b/3.2/containers/CCSeq/module-type-MONAD/index.html
@@ -0,0 +1,2 @@
+
+MONAD (containers.CCSeq.MONAD)
\ No newline at end of file
diff --git a/3.2/containers/CCSet/.dune-keep b/3.2/containers/CCSet/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers/CCSet/index.html b/3.2/containers/CCSet/index.html
new file mode 100644
index 00000000..f8c19ba5
--- /dev/null
+++ b/3.2/containers/CCSet/index.html
@@ -0,0 +1,2 @@
+
+CCSet (containers.CCSet)
Module CCSet
Wrapper around Set
since
0.9
type'a iter = ('a-> unit)-> unit
Fast internal iterator.
since
2.8
type'a printer = Stdlib.Format.formatter ->'a-> unit
module Make : functor (O : Stdlib.Set.OrderedType) ->SwithtypeMake.t = Stdlib.Set.Make(O).t andtypeMake.elt = O.t
\ No newline at end of file
diff --git a/3.2/containers/CCSet/module-type-S/index.html b/3.2/containers/CCSet/module-type-S/index.html
new file mode 100644
index 00000000..c8aa9a5f
--- /dev/null
+++ b/3.2/containers/CCSet/module-type-S/index.html
@@ -0,0 +1,2 @@
+
+S (containers.CCSet.S)
\ No newline at end of file
diff --git a/3.2/containers/CCSexp/.dune-keep b/3.2/containers/CCSexp/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers/CCSexp/Decoder/index.html b/3.2/containers/CCSexp/Decoder/index.html
new file mode 100644
index 00000000..116d1109
--- /dev/null
+++ b/3.2/containers/CCSexp/Decoder/index.html
@@ -0,0 +1,2 @@
+
+Decoder (containers.CCSexp.Decoder)
\ No newline at end of file
diff --git a/3.2/containers/CCSexp/Make/Decoder/index.html b/3.2/containers/CCSexp/Make/Decoder/index.html
new file mode 100644
index 00000000..f39cfc20
--- /dev/null
+++ b/3.2/containers/CCSexp/Make/Decoder/index.html
@@ -0,0 +1,2 @@
+
+Decoder (containers.CCSexp.Make.Decoder)
\ No newline at end of file
diff --git a/3.2/containers/CCSexp/Make/argument-1-Sexp/index.html b/3.2/containers/CCSexp/Make/argument-1-Sexp/index.html
new file mode 100644
index 00000000..f9379c82
--- /dev/null
+++ b/3.2/containers/CCSexp/Make/argument-1-Sexp/index.html
@@ -0,0 +1,2 @@
+
+1-Sexp (containers.CCSexp.Make.1-Sexp)
val match_ : t->atom:(string ->'a)->list:(t list->'a)->'a
\ No newline at end of file
diff --git a/3.2/containers/CCSexp/Make/index.html b/3.2/containers/CCSexp/Make/index.html
new file mode 100644
index 00000000..227e9f2b
--- /dev/null
+++ b/3.2/containers/CCSexp/Make/index.html
@@ -0,0 +1,2 @@
+
+Make (containers.CCSexp.Make)
Module CCSexp.Make
Functorized operations
This builds a parser and printer for S-expressions represented as in the Sexp argument.
Parse a S-expression from the given channel. Can read more data than necessary, so don't use this if you need finer-grained control (e.g. to read something else after the S-exp).
\ No newline at end of file
diff --git a/3.2/containers/CCSexp/index.html b/3.2/containers/CCSexp/index.html
new file mode 100644
index 00000000..823408bd
--- /dev/null
+++ b/3.2/containers/CCSexp/index.html
@@ -0,0 +1,2 @@
+
+CCSexp (containers.CCSexp)
Module CCSexp
Handling S-expressions
since
3.0 moved into containers-core, previously in [containers.sexp]
Parse a S-expression from the given channel. Can read more data than necessary, so don't use this if you need finer-grained control (e.g. to read something else after the S-exp).
\ No newline at end of file
diff --git a/3.2/containers/CCSexp/module-type-S/Decoder/index.html b/3.2/containers/CCSexp/module-type-S/Decoder/index.html
new file mode 100644
index 00000000..84b0757a
--- /dev/null
+++ b/3.2/containers/CCSexp/module-type-S/Decoder/index.html
@@ -0,0 +1,2 @@
+
+Decoder (containers.CCSexp.S.Decoder)
\ No newline at end of file
diff --git a/3.2/containers/CCSexp/module-type-S/index.html b/3.2/containers/CCSexp/module-type-S/index.html
new file mode 100644
index 00000000..873c34bc
--- /dev/null
+++ b/3.2/containers/CCSexp/module-type-S/index.html
@@ -0,0 +1,2 @@
+
+S (containers.CCSexp.S)
Parse a S-expression from the given channel. Can read more data than necessary, so don't use this if you need finer-grained control (e.g. to read something else after the S-exp).
\ No newline at end of file
diff --git a/3.2/containers/CCSexp/module-type-SEXP/index.html b/3.2/containers/CCSexp/module-type-SEXP/index.html
new file mode 100644
index 00000000..16339c7f
--- /dev/null
+++ b/3.2/containers/CCSexp/module-type-SEXP/index.html
@@ -0,0 +1,2 @@
+
+SEXP (containers.CCSexp.SEXP)
val match_ : t->atom:(string ->'a)->list:(t list->'a)->'a
\ No newline at end of file
diff --git a/3.2/containers/CCSexp_intf/.dune-keep b/3.2/containers/CCSexp_intf/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers/CCSexp_intf/index.html b/3.2/containers/CCSexp_intf/index.html
new file mode 100644
index 00000000..a06f0ecf
--- /dev/null
+++ b/3.2/containers/CCSexp_intf/index.html
@@ -0,0 +1,2 @@
+
+CCSexp_intf (containers.CCSexp_intf)
\ No newline at end of file
diff --git a/3.2/containers/CCSexp_intf/module-type-S/Decoder/index.html b/3.2/containers/CCSexp_intf/module-type-S/Decoder/index.html
new file mode 100644
index 00000000..63687db3
--- /dev/null
+++ b/3.2/containers/CCSexp_intf/module-type-S/Decoder/index.html
@@ -0,0 +1,2 @@
+
+Decoder (containers.CCSexp_intf.S.Decoder)
\ No newline at end of file
diff --git a/3.2/containers/CCSexp_intf/module-type-S/index.html b/3.2/containers/CCSexp_intf/module-type-S/index.html
new file mode 100644
index 00000000..2b7e8b18
--- /dev/null
+++ b/3.2/containers/CCSexp_intf/module-type-S/index.html
@@ -0,0 +1,2 @@
+
+S (containers.CCSexp_intf.S)
Parse a S-expression from the given channel. Can read more data than necessary, so don't use this if you need finer-grained control (e.g. to read something else after the S-exp).
val parse_chan_gen : Stdlib.in_channel ->tor_errorgen
Parse a channel into a generator of S-expressions.
val parse_chan_list : Stdlib.in_channel ->t listor_error
\ No newline at end of file
diff --git a/3.2/containers/CCSexp_intf/module-type-SEXP/index.html b/3.2/containers/CCSexp_intf/module-type-SEXP/index.html
new file mode 100644
index 00000000..de91e947
--- /dev/null
+++ b/3.2/containers/CCSexp_intf/module-type-SEXP/index.html
@@ -0,0 +1,2 @@
+
+SEXP (containers.CCSexp_intf.SEXP)
val match_ : t->atom:(string ->'a)->list:(t list->'a)->'a
\ No newline at end of file
diff --git a/3.2/containers/CCSexp_lex/.dune-keep b/3.2/containers/CCSexp_lex/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers/CCSexp_lex/index.html b/3.2/containers/CCSexp_lex/index.html
new file mode 100644
index 00000000..6ddc7ee1
--- /dev/null
+++ b/3.2/containers/CCSexp_lex/index.html
@@ -0,0 +1,2 @@
+
+CCSexp_lex (containers.CCSexp_lex)
Module CCSexp_lex
type token =
| ATOMof string
| LIST_OPEN
| LIST_CLOSE
| SEXP_COMMENT
| EOI
exceptionErrorof int * int * string
val error : Stdlib.Lexing.lexbuf -> string ->'a
type unescape_state =
| Not_escaped
| Escaped
| Escaped_int_1of int
| Escaped_int_2of int
val char_equal : char -> char -> bool
val remove_quotes : Stdlib.Lexing.lexbuf -> string -> string
val __ocaml_lex_token_rec : Stdlib.Lexing.lexbuf -> int ->token
\ No newline at end of file
diff --git a/3.2/containers/CCShimsArrayLabels_/.dune-keep b/3.2/containers/CCShimsArrayLabels_/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers/CCShimsArrayLabels_/Floatarray/index.html b/3.2/containers/CCShimsArrayLabels_/Floatarray/index.html
new file mode 100644
index 00000000..f406cc5b
--- /dev/null
+++ b/3.2/containers/CCShimsArrayLabels_/Floatarray/index.html
@@ -0,0 +1,2 @@
+
+Floatarray (containers.CCShimsArrayLabels_.Floatarray)
Module CCShimsArrayLabels_.Floatarray
val create : int -> floatarray
val length : floatarray -> int
val get : floatarray -> int -> float
val set : floatarray -> int -> float -> unit
val unsafe_get : floatarray -> int -> float
val unsafe_set : floatarray -> int -> float -> unit
\ No newline at end of file
diff --git a/3.2/containers/CCShimsArrayLabels_/index.html b/3.2/containers/CCShimsArrayLabels_/index.html
new file mode 100644
index 00000000..00e34c44
--- /dev/null
+++ b/3.2/containers/CCShimsArrayLabels_/index.html
@@ -0,0 +1,2 @@
+
+CCShimsArrayLabels_ (containers.CCShimsArrayLabels_)
\ No newline at end of file
diff --git a/3.2/containers/CCShimsArray_/.dune-keep b/3.2/containers/CCShimsArray_/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers/CCShimsArray_/index.html b/3.2/containers/CCShimsArray_/index.html
new file mode 100644
index 00000000..e1f802fd
--- /dev/null
+++ b/3.2/containers/CCShimsArray_/index.html
@@ -0,0 +1,2 @@
+
+CCShimsArray_ (containers.CCShimsArray_)
val create_matrix : int -> int ->'a->'a array array
val append : 'a array->'a array->'a array
val concat : 'a array list->'a array
val sub : 'a array-> int -> int ->'a array
val copy : 'a array->'a array
val fill : 'a array-> int -> int ->'a-> unit
val blit : 'a array-> int ->'a array-> int -> int -> unit
val to_list : 'a array->'a list
val of_list : 'a list->'a array
val iter : ('a-> unit)->'a array-> unit
val iteri : (int ->'a-> unit)->'a array-> unit
val map : ('a->'b)->'a array->'b array
val mapi : (int ->'a->'b)->'a array->'b array
val fold_left : ('a->'b->'a)->'a->'b array->'a
val fold_right : ('b->'a->'a)->'b array->'a->'a
val iter2 : ('a->'b-> unit)->'a array->'b array-> unit
val map2 : ('a->'b->'c)->'a array->'b array->'c array
val for_all : ('a-> bool)->'a array-> bool
val exists : ('a-> bool)->'a array-> bool
val for_all2 : ('a->'b-> bool)->'a array->'b array-> bool
val exists2 : ('a->'b-> bool)->'a array->'b array-> bool
val mem : 'a->'a array-> bool
val memq : 'a->'a array-> bool
val sort : ('a->'a-> int)->'a array-> unit
val stable_sort : ('a->'a-> int)->'a array-> unit
val fast_sort : ('a->'a-> int)->'a array-> unit
val to_seq : 'a array->'a Stdlib.Seq.t
val to_seqi : 'a array->(int * 'a) Stdlib.Seq.t
val of_seq : 'a Stdlib.Seq.t->'a array
val unsafe_get : 'a array-> int ->'a
val unsafe_set : 'a array-> int ->'a-> unit
module Floatarray = Stdlib__array.Floatarray
\ No newline at end of file
diff --git a/3.2/containers/CCShimsEither_/.dune-keep b/3.2/containers/CCShimsEither_/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers/CCShimsEither_/index.html b/3.2/containers/CCShimsEither_/index.html
new file mode 100644
index 00000000..f8d551f0
--- /dev/null
+++ b/3.2/containers/CCShimsEither_/index.html
@@ -0,0 +1,2 @@
+
+CCShimsEither_ (containers.CCShimsEither_)
Module CCShimsEither_
type('a, 'b) t =
| Leftof'a
| Rightof'b
\ No newline at end of file
diff --git a/3.2/containers/CCShimsFormat_/.dune-keep b/3.2/containers/CCShimsFormat_/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers/CCShimsFormat_/index.html b/3.2/containers/CCShimsFormat_/index.html
new file mode 100644
index 00000000..40eccf9c
--- /dev/null
+++ b/3.2/containers/CCShimsFormat_/index.html
@@ -0,0 +1,2 @@
+
+CCShimsFormat_ (containers.CCShimsFormat_)
Module CCShimsFormat_
val pp_open_tag : Stdlib.Format.formatter -> Stdlib.Format.tag -> unit
val pp_close_tag : Stdlib.Format.formatter -> unit -> unit
val pp_get_formatter_tag_functions : Stdlib.Format.formatter -> unit -> Stdlib.Format.formatter_tag_functions
val pp_set_formatter_tag_functions : Stdlib.Format.formatter -> Stdlib.Format.formatter_tag_functions -> unit
\ No newline at end of file
diff --git a/3.2/containers/CCShimsFun_/.dune-keep b/3.2/containers/CCShimsFun_/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers/CCShimsFun_/index.html b/3.2/containers/CCShimsFun_/index.html
new file mode 100644
index 00000000..7d456658
--- /dev/null
+++ b/3.2/containers/CCShimsFun_/index.html
@@ -0,0 +1,2 @@
+
+CCShimsFun_ (containers.CCShimsFun_)
Module CCShimsFun_
includemoduletypeof Stdlib.Fun
val id : 'a->'a
val const : 'a->'b->'a
val flip : ('a->'b->'c)->'b->'a->'c
val negate : ('a-> bool)->'a-> bool
val protect : finally:(unit -> unit)->(unit ->'a)->'a
exceptionFinally_raisedof exn
\ No newline at end of file
diff --git a/3.2/containers/CCShimsInt_/.dune-keep b/3.2/containers/CCShimsInt_/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers/CCShimsInt_/index.html b/3.2/containers/CCShimsInt_/index.html
new file mode 100644
index 00000000..69b3d972
--- /dev/null
+++ b/3.2/containers/CCShimsInt_/index.html
@@ -0,0 +1,2 @@
+
+CCShimsInt_ (containers.CCShimsInt_)
\ No newline at end of file
diff --git a/3.2/containers/CCShimsList_/.dune-keep b/3.2/containers/CCShimsList_/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers/CCShimsList_/index.html b/3.2/containers/CCShimsList_/index.html
new file mode 100644
index 00000000..b0ddb96f
--- /dev/null
+++ b/3.2/containers/CCShimsList_/index.html
@@ -0,0 +1,2 @@
+
+CCShimsList_ (containers.CCShimsList_)
Module CCShimsList_
include Stdlib.List
type!'a t = 'a list =
| ([])
| (::)of'a * 'a list
val length : 'a list-> int
val compare_lengths : 'a list->'b list-> int
val compare_length_with : 'a list-> int -> int
val cons : 'a->'a list->'a list
val hd : 'a list->'a
val tl : 'a list->'a list
val nth : 'a list-> int ->'a
val nth_opt : 'a list-> int ->'a option
val rev : 'a list->'a list
val init : int ->(int ->'a)->'a list
val append : 'a list->'a list->'a list
val rev_append : 'a list->'a list->'a list
val concat : 'a list list->'a list
val flatten : 'a list list->'a list
val iter : ('a-> unit)->'a list-> unit
val iteri : (int ->'a-> unit)->'a list-> unit
val map : ('a->'b)->'a list->'b list
val mapi : (int ->'a->'b)->'a list->'b list
val rev_map : ('a->'b)->'a list->'b list
val filter_map : ('a->'b option)->'a list->'b list
val concat_map : ('a->'b list)->'a list->'b list
val fold_left_map : ('a->'b->'a * 'c)->'a->'b list->'a * 'c list
val fold_left : ('a->'b->'a)->'a->'b list->'a
val fold_right : ('a->'b->'b)->'a list->'b->'b
val iter2 : ('a->'b-> unit)->'a list->'b list-> unit
val map2 : ('a->'b->'c)->'a list->'b list->'c list
val rev_map2 : ('a->'b->'c)->'a list->'b list->'c list
val fold_left2 : ('a->'b->'c->'a)->'a->'b list->'c list->'a
val fold_right2 : ('a->'b->'c->'c)->'a list->'b list->'c->'c
val for_all : ('a-> bool)->'a list-> bool
val exists : ('a-> bool)->'a list-> bool
val for_all2 : ('a->'b-> bool)->'a list->'b list-> bool
val exists2 : ('a->'b-> bool)->'a list->'b list-> bool
val mem : 'a->'a list-> bool
val memq : 'a->'a list-> bool
val find : ('a-> bool)->'a list->'a
val find_opt : ('a-> bool)->'a list->'a option
val find_map : ('a->'b option)->'a list->'b option
val filter : ('a-> bool)->'a list->'a list
val find_all : ('a-> bool)->'a list->'a list
val filteri : (int ->'a-> bool)->'a list->'a list
val partition : ('a-> bool)->'a list->'a list * 'a list
val assoc : 'a->('a * 'b) list->'b
val assoc_opt : 'a->('a * 'b) list->'b option
val assq : 'a->('a * 'b) list->'b
val assq_opt : 'a->('a * 'b) list->'b option
val mem_assoc : 'a->('a * 'b) list-> bool
val mem_assq : 'a->('a * 'b) list-> bool
val remove_assoc : 'a->('a * 'b) list->('a * 'b) list
val remove_assq : 'a->('a * 'b) list->('a * 'b) list
val split : ('a * 'b) list->'a list * 'b list
val combine : 'a list->'b list->('a * 'b) list
val sort : ('a->'a-> int)->'a list->'a list
val stable_sort : ('a->'a-> int)->'a list->'a list
val fast_sort : ('a->'a-> int)->'a list->'a list
val sort_uniq : ('a->'a-> int)->'a list->'a list
val merge : ('a->'a-> int)->'a list->'a list->'a list
val to_seq : 'a list->'a Stdlib.Seq.t
val of_seq : 'a Stdlib.Seq.t->'a list
\ No newline at end of file
diff --git a/3.2/containers/CCShimsMkLetList_/.dune-keep b/3.2/containers/CCShimsMkLetList_/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers/CCShimsMkLetList_/Make/argument-1-X/index.html b/3.2/containers/CCShimsMkLetList_/Make/argument-1-X/index.html
new file mode 100644
index 00000000..cefcd187
--- /dev/null
+++ b/3.2/containers/CCShimsMkLetList_/Make/argument-1-X/index.html
@@ -0,0 +1,2 @@
+
+1-X (containers.CCShimsMkLetList_.Make.1-X)
Parameter Make.1-X
val combine_shortest : 'a list->'b list->('a * 'b) list
\ No newline at end of file
diff --git a/3.2/containers/CCShimsMkLetList_/Make/index.html b/3.2/containers/CCShimsMkLetList_/Make/index.html
new file mode 100644
index 00000000..12de4f40
--- /dev/null
+++ b/3.2/containers/CCShimsMkLetList_/Make/index.html
@@ -0,0 +1,2 @@
+
+Make (containers.CCShimsMkLetList_.Make)
\ No newline at end of file
diff --git a/3.2/containers/CCShimsMkLetList_/index.html b/3.2/containers/CCShimsMkLetList_/index.html
new file mode 100644
index 00000000..3ce58056
--- /dev/null
+++ b/3.2/containers/CCShimsMkLetList_/index.html
@@ -0,0 +1,2 @@
+
+CCShimsMkLetList_ (containers.CCShimsMkLetList_)
moduleMake : functor (X : sig ... end) ->sig ... end
\ No newline at end of file
diff --git a/3.2/containers/CCShimsMkLetList_/module-type-S/index.html b/3.2/containers/CCShimsMkLetList_/module-type-S/index.html
new file mode 100644
index 00000000..2404f344
--- /dev/null
+++ b/3.2/containers/CCShimsMkLetList_/module-type-S/index.html
@@ -0,0 +1,9 @@
+
+S (containers.CCShimsMkLetList_.S)
Module type CCShimsMkLetList_.S
val and& : 'a list->'b list->('a * 'b) list
(and&) is combine_shortest. It allows to perform a synchronized product between two lists, stopping gently at the shortest. Usable both with let+ and let*.
# let f xs ys zs =
+ let+ x = xs
+ and& y = ys
+ and& z = zs in
+ x + y + z;;
+val f : int list -> int list -> int list -> int list = <fun>
+# f [1;2] [5;6;7] [10;10];;
+- : int list = [16; 18]
since
3.1
\ No newline at end of file
diff --git a/3.2/containers/CCShimsMkLet_/.dune-keep b/3.2/containers/CCShimsMkLet_/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers/CCShimsMkLet_/Make/argument-1-X/index.html b/3.2/containers/CCShimsMkLet_/Make/argument-1-X/index.html
new file mode 100644
index 00000000..28065136
--- /dev/null
+++ b/3.2/containers/CCShimsMkLet_/Make/argument-1-X/index.html
@@ -0,0 +1,2 @@
+
+1-X (containers.CCShimsMkLet_.Make.1-X)
\ No newline at end of file
diff --git a/3.2/containers/CCShimsMkLet_/Make/index.html b/3.2/containers/CCShimsMkLet_/Make/index.html
new file mode 100644
index 00000000..5c425c18
--- /dev/null
+++ b/3.2/containers/CCShimsMkLet_/Make/index.html
@@ -0,0 +1,2 @@
+
+Make (containers.CCShimsMkLet_.Make)
\ No newline at end of file
diff --git a/3.2/containers/CCShimsMkLet_/Make2/argument-1-X/index.html b/3.2/containers/CCShimsMkLet_/Make2/argument-1-X/index.html
new file mode 100644
index 00000000..b41d9ff3
--- /dev/null
+++ b/3.2/containers/CCShimsMkLet_/Make2/argument-1-X/index.html
@@ -0,0 +1,2 @@
+
+1-X (containers.CCShimsMkLet_.Make2.1-X)
\ No newline at end of file
diff --git a/3.2/containers/CCShimsMkLet_/Make2/index.html b/3.2/containers/CCShimsMkLet_/Make2/index.html
new file mode 100644
index 00000000..05e2f66c
--- /dev/null
+++ b/3.2/containers/CCShimsMkLet_/Make2/index.html
@@ -0,0 +1,2 @@
+
+Make2 (containers.CCShimsMkLet_.Make2)
\ No newline at end of file
diff --git a/3.2/containers/CCShimsMkLet_/index.html b/3.2/containers/CCShimsMkLet_/index.html
new file mode 100644
index 00000000..06653e66
--- /dev/null
+++ b/3.2/containers/CCShimsMkLet_/index.html
@@ -0,0 +1,2 @@
+
+CCShimsMkLet_ (containers.CCShimsMkLet_)
\ No newline at end of file
diff --git a/3.2/containers/CCShimsMkLet_/module-type-S/index.html b/3.2/containers/CCShimsMkLet_/module-type-S/index.html
new file mode 100644
index 00000000..07e2c9b3
--- /dev/null
+++ b/3.2/containers/CCShimsMkLet_/module-type-S/index.html
@@ -0,0 +1,2 @@
+
+S (containers.CCShimsMkLet_.S)
Module type CCShimsMkLet_.S
glue code for let-operators on OCaml >= 4.08 (auto generated)
\ No newline at end of file
diff --git a/3.2/containers/CCShimsMkLet_/module-type-S2/index.html b/3.2/containers/CCShimsMkLet_/module-type-S2/index.html
new file mode 100644
index 00000000..c929d4e1
--- /dev/null
+++ b/3.2/containers/CCShimsMkLet_/module-type-S2/index.html
@@ -0,0 +1,2 @@
+
+S2 (containers.CCShimsMkLet_.S2)
Module type CCShimsMkLet_.S2
type('a, 'e) t_let2
val let+ : ('a, 'e)t_let2->('a->'b)->('b, 'e)t_let2
\ No newline at end of file
diff --git a/3.2/containers/CCShims_/.dune-keep b/3.2/containers/CCShims_/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers/CCShims_/index.html b/3.2/containers/CCShims_/index.html
new file mode 100644
index 00000000..f4591a1e
--- /dev/null
+++ b/3.2/containers/CCShims_/index.html
@@ -0,0 +1,2 @@
+
+CCShims_ (containers.CCShims_)
Module CCShims_
module Stdlib = Stdlib
\ No newline at end of file
diff --git a/3.2/containers/CCString/.dune-keep b/3.2/containers/CCString/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers/CCString/Find/index.html b/3.2/containers/CCString/Find/index.html
new file mode 100644
index 00000000..2628bdba
--- /dev/null
+++ b/3.2/containers/CCString/Find/index.html
@@ -0,0 +1,2 @@
+
+Find (containers.CCString.Find)
val find : ?start:int->pattern:[ `Direct ]pattern-> string -> int
find ~start ~pattern s searches for pattern in the string s, left-to-right.
returns
the offset of the first match, -1 otherwise.
parameter start
offset in string at which we start.
val rfind : ?start:int->pattern:[ `Reverse ]pattern-> string -> int
rfind ~start ~pattern s searches for pattern in the string s, right-to-left.
returns
the offset of the start of the first match from the right, -1 otherwise.
parameter start
right-offset in string at which we start.
\ No newline at end of file
diff --git a/3.2/containers/CCString/Infix/index.html b/3.2/containers/CCString/Infix/index.html
new file mode 100644
index 00000000..d9b454bc
--- /dev/null
+++ b/3.2/containers/CCString/Infix/index.html
@@ -0,0 +1,2 @@
+
+Infix (containers.CCString.Infix)
\ No newline at end of file
diff --git a/3.2/containers/CCString/Split/index.html b/3.2/containers/CCString/Split/index.html
new file mode 100644
index 00000000..a3e05bd2
--- /dev/null
+++ b/3.2/containers/CCString/Split/index.html
@@ -0,0 +1,2 @@
+
+Split (containers.CCString.Split)
Module CCString.Split
type drop_if_empty = {
first : bool;
last : bool;
}
Specification of what to do with empty blocks, as in split ~by:"-" "-a-b-".
{first=false; last=false} will return ""; "a"; "b"; ""
{first=true; last=false} will return "a"; "b" ""
{first=false; last=true} will return ""; "a"; "b"
{first=true; last=true} will return "a"; "b"
The default value of all remaining functions is Drop_none.
no_drop does not drop any group, even empty and on borders.
since
1.5
val list_ : ?drop:drop_if_empty->by:string-> string ->(string * int * int) list
list_ ~drop ~by s splits the given string s along the given separator by. Should only be used with very small separators, otherwise use Containers_string.KMP.
returns
a list of slices (s,index,length) that are separated by by. String.sub can then be used to actually extract a string from the slice.
raises Failure
if by = "".
val gen : ?drop:drop_if_empty->by:string-> string ->(string * int * int)gen
gen ~drop ~by s splits the given string s along the given separator by. Returns a gen of slices.
val iter : ?drop:drop_if_empty->by:string-> string ->(string * int * int)iter
iter ~drop ~by s splits the given string s along the given separator by. Returns an iter of slices.
since
2.8
val seq : ?drop:drop_if_empty->by:string-> string ->(string * int * int) Stdlib.Seq.t
seq ~drop ~by s splits the given string s along the given separator by. Returns a Seq.t of slices. Renamed from std_seq since 3.0.
since
3.0
Copying functions
Those split functions actually copy the substrings, which can be more convenient but less efficient in general.
val list_cpy : ?drop:drop_if_empty->by:string-> string ->string list
list_cpy ~drop ~by s splits the given string s along the given separator by. Returns a list of strings.
val gen_cpy : ?drop:drop_if_empty->by:string-> string ->string gen
gen_cpy ~drop ~by s splits the given string s along the given separator by. Returns a gen of strings.
val iter_cpy : ?drop:drop_if_empty->by:string-> string ->string iter
iter_cpy ~drop ~by s splits the given string s along the given separator by. Returns an iter of strings.
since
2.8
val seq_cpy : ?drop:drop_if_empty->by:string-> string ->string Stdlib.Seq.t
seq_cpy ~drop ~by s splits the given string s along the given separator by. Returns a Seq.t of strings. Renamed from std_seq_cpy since 3.0.
since
3.0
val left : by:string-> string ->(string * string) option
left ~by s splits on the first occurrence of by from the leftmost part of the string s.
since
0.12
val left_exn : by:string-> string -> string * string
left_exn ~by s splits on the first occurrence of by from the leftmost part of the string s.
raises Not_found
if by is not part of the string s.
since
0.16
val right : by:string-> string ->(string * string) option
right ~by s splits on the first occurrence of by from the rightmost part of the string s.
since
0.12
val right_exn : by:string-> string -> string * string
right_exn ~by s splits on the first occurrence of by from the rightmost part of the string s.
raises Not_found
if by is not part of the string s.
since
0.16
\ No newline at end of file
diff --git a/3.2/containers/CCString/index.html b/3.2/containers/CCString/index.html
new file mode 100644
index 00000000..2c892b9f
--- /dev/null
+++ b/3.2/containers/CCString/index.html
@@ -0,0 +1,2 @@
+
+CCString (containers.CCString)
length s returns the length (number of characters) of the given string s.
val blit : t-> int -> Stdlib.Bytes.t -> int -> int -> unit
blit src src_pos dst dst_pos len copies len characters from string src starting at character indice src_pos, to the Bytes sequence dst starting at character indice dst_pos. Like String.blit. Compatible with the -safe-string option.
replace ~which ~sub ~by s replaces some occurrences of sub by by in s.
parameter which
decides whether the occurrences to replace are:
`Left first occurrence from the left (beginning).
`Right first occurrence from the right (end).
`All all occurrences (default).
raises Invalid_argument
if sub = "".
since
0.14
val is_sub : sub:string-> int -> string -> int ->sub_len:int-> bool
is_sub ~sub ~sub_pos s ~pos ~sub_len returns true iff the substring of sub starting at position sub_pos and of length sub_len is a substring of s starting at position pos.
val repeat : string -> int -> string
repeat s n creates a string by repeating the string sn times.
val prefix : pre:string-> string -> bool
prefix ~pre s returns true iff pre is a prefix of s.
val suffix : suf:string-> string -> bool
suffix ~suf s returns true iff suf is a suffix of s.
since
0.7
val chop_prefix : pre:string-> string ->string option
chop_prefix ~pre s removes pre from s if pre really is a prefix of s, returns None otherwise.
since
0.17
val chop_suffix : suf:string-> string ->string option
chop_suffix ~suf s removes suf from s if suf really is a suffix of s, returns None otherwise.
since
0.17
val take : int -> string -> string
take n s keeps only the n first chars of s.
since
0.17
val drop : int -> string -> string
drop n s removes the n first chars of s.
since
0.17
val take_drop : int -> string -> string * string
take_drop n s is take n s, drop n s.
since
0.17
val lines : string ->string list
lines s returns a list of the lines of s (splits along '\n').
unlines_iter iter concatenates all strings of iter, separated with '\n'.
since
3.2
val unlines_seq : string Stdlib.Seq.t-> string
unlines_seq seq concatenates all strings of seq, separated with '\n'.
since
3.2
val set : string -> int -> char -> string
set s i c creates a new string which is a copy of s, except for index i, which becomes c.
raises Invalid_argument
if i is an invalid index.
since
0.12
val iter : (char -> unit)-> string -> unit
iter f s applies function f on each character of s. Alias to String.iter.
since
0.12
val filter_map : (char ->char option)-> string -> string
filter_map f s calls (f a0) (f a1) … (f an) where a0 … an are the characters of s. It returns the string of characters ci such as f ai = Some ci (when f returns None, the corresponding element of s is discarded).
since
0.17
val filter : (char -> bool)-> string -> string
filter f s discards characters of s not satisfying f.
since
0.17
val flat_map : ?sep:string->(char -> string)-> string -> string
flat_map ~sep f s maps each chars of s to a string, then concatenates them all.
parameter sep
optional separator between each generated string.
since
0.12
val for_all : (char -> bool)-> string -> bool
for_all f s is true iff all characters of s satisfy the predicate f.
since
0.12
val exists : (char -> bool)-> string -> bool
exists f s is true iff some character of s satisfy the predicate f.
split_on_char by s splits the string s along the given char by.
since
1.2
val split : by:string-> string ->string list
split ~by s splits the string s along the given string by. Alias to Split.list_cpy.
since
1.2
Utils
val compare_versions : string -> string -> int
compare_versions s1 s2 compares version stringss1 and s2, considering that numbers are above text.
since
0.13
val compare_natural : string -> string -> int
compare_natural s1 s2 is the Natural Sort Order, comparing chunks of digits as natural numbers. https://en.wikipedia.org/wiki/Natural_sort_order
since
1.3
val edit_distance : ?cutoff:int-> string -> string -> int
edit_distance ~cutoff s1 s2 is the edition distance between the two strings s1 and s2. This satisfies the classical distance axioms: it is always positive, symmetric, and satisfies the formula distance s1 s2 + distance s2 s3 >= distance s1 s3.
parameter cutoff
if provided, it's a cap on both the number of iterations, and on the result. (since 3.0). This is useful if you just want to check whether the edit distance is less or equal than 2 (use cutoff of 3).
\ No newline at end of file
diff --git a/3.2/containers/CCStringLabels/.dune-keep b/3.2/containers/CCStringLabels/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers/CCStringLabels/Find/index.html b/3.2/containers/CCStringLabels/Find/index.html
new file mode 100644
index 00000000..7dd0c4f2
--- /dev/null
+++ b/3.2/containers/CCStringLabels/Find/index.html
@@ -0,0 +1,2 @@
+
+Find (containers.CCStringLabels.Find)
val find : ?start:int->pattern:[ `Direct ]pattern-> string -> int
find ?start ~pattern s searches for pattern in the string s, left-to-right.
returns
the offset of the first match, -1 otherwise.
parameter start
offset in string at which we start.
val rfind : ?start:int->pattern:[ `Reverse ]pattern-> string -> int
rfind ?start ~pattern s searches for pattern in the string s, right-to-left.
returns
the offset of the start of the first match from the right, -1 otherwise.
parameter start
right-offset in string at which we start.
\ No newline at end of file
diff --git a/3.2/containers/CCStringLabels/Infix/index.html b/3.2/containers/CCStringLabels/Infix/index.html
new file mode 100644
index 00000000..017a74a9
--- /dev/null
+++ b/3.2/containers/CCStringLabels/Infix/index.html
@@ -0,0 +1,2 @@
+
+Infix (containers.CCStringLabels.Infix)
\ No newline at end of file
diff --git a/3.2/containers/CCStringLabels/Split/index.html b/3.2/containers/CCStringLabels/Split/index.html
new file mode 100644
index 00000000..fc17128e
--- /dev/null
+++ b/3.2/containers/CCStringLabels/Split/index.html
@@ -0,0 +1,2 @@
+
+Split (containers.CCStringLabels.Split)
Module CCStringLabels.Split
type drop_if_empty = {
first : bool;
last : bool;
}
Specification of what to do with empty blocks, as in split ~by:"-" "-a-b-".
{first=false; last=false} will return ""; "a"; "b"; ""
{first=true; last=false} will return "a"; "b" ""
{first=false; last=true} will return ""; "a"; "b"
{first=true; last=true} will return "a"; "b"
The default value of all remaining functions is Drop_none.
no_drop does not drop any group, even empty and on borders.
since
1.5
val list_ : ?drop:drop_if_empty->by:string-> string ->(string * int * int) list
list_ ?drop ~by s splits the given string s along the given separator by. Should only be used with very small separators, otherwise use Containers_string.KMP.
returns
a list of slices (s,index,length) that are separated by by. String.sub can then be used to actually extract a string from the slice.
raises Failure
if by = "".
val gen : ?drop:drop_if_empty->by:string-> string ->(string * int * int)gen
gen ?drop ~by s splits the given string s along the given separator by. Returns a gen of slices.
val iter : ?drop:drop_if_empty->by:string-> string ->(string * int * int)iter
iter ?drop ~by s splits the given string s along the given separator by. Returns an iter of slices.
since
2.8
val seq : ?drop:drop_if_empty->by:string-> string ->(string * int * int) Stdlib.Seq.t
seq ?drop ~by s splits the given string s along the given separator by. Returns a Seq.t of slices. Renamed from std_seq since 3.0.
since
3.0
Copying functions
Those split functions actually copy the substrings, which can be more convenient but less efficient in general.
val list_cpy : ?drop:drop_if_empty->by:string-> string ->string list
list_cpy ?drop ~by s splits the given string s along the given separator by. Returns a list of strings.
val gen_cpy : ?drop:drop_if_empty->by:string-> string ->string gen
gen_cpy ?drop ~by s splits the given string s along the given separator by. Returns a gen of strings.
val iter_cpy : ?drop:drop_if_empty->by:string-> string ->string iter
iter_cpy ?drop ~by s splits the given string s along the given separator by. Returns an iter of strings.
since
2.8
val seq_cpy : ?drop:drop_if_empty->by:string-> string ->string Stdlib.Seq.t
seq_cpy ?drop ~by s splits the given string s along the given separator by. Returns a Seq.t of strings. Renamed from std_seq_cpy since 3.0.
since
3.0
val left : by:string-> string ->(string * string) option
left ~by s splits on the first occurrence of by from the leftmost part of the string s.
since
0.12
val left_exn : by:string-> string -> string * string
left_exn ~by s splits on the first occurrence of by from the leftmost part of the string s.
raises Not_found
if by is not part of the string s.
since
0.16
val right : by:string-> string ->(string * string) option
right ~by s splits on the first occurrence of by from the rightmost part of the string s.
since
0.12
val right_exn : by:string-> string -> string * string
right_exn ~by s splits on the first occurrence of by from the rightmost part of the string s.
raises Not_found
if by is not part of the string s.
since
0.16
\ No newline at end of file
diff --git a/3.2/containers/CCStringLabels/index.html b/3.2/containers/CCStringLabels/index.html
new file mode 100644
index 00000000..4f90537e
--- /dev/null
+++ b/3.2/containers/CCStringLabels/index.html
@@ -0,0 +1,2 @@
+
+CCStringLabels (containers.CCStringLabels)
length s returns the length (number of characters) of the given string s.
val blit : src:t->src_pos:int->dst:Stdlib.Bytes.t->dst_pos:int->len:int-> unit
blit ~src ~src_pos ~dst ~dst_pos ~len copies len characters from string src starting at character indice src_pos, to the Bytes sequence dst starting at character indice dst_pos. Like String.blit. Compatible with the -safe-string option.
replace ?which ~sub ~by s replaces some occurrences of sub by by in s.
parameter which
decides whether the occurrences to replace are:
`Left first occurrence from the left (beginning).
`Right first occurrence from the right (end).
`All all occurrences (default).
raises Invalid_argument
if sub = "".
since
0.14
val is_sub : sub:string->sub_pos:int-> string ->pos:int->sub_len:int-> bool
is_sub ~sub ~sub_pos s ~pos ~sub_len returns true iff the substring of sub starting at position sub_pos and of length sub_len is a substring of s starting at position pos.
val repeat : string -> int -> string
repeat s n creates a string by repeating the string sn times.
val prefix : pre:string-> string -> bool
prefix ~pre s returns true iff pre is a prefix of s.
val suffix : suf:string-> string -> bool
suffix ~suf s returns true iff suf is a suffix of s.
since
0.7
val chop_prefix : pre:string-> string ->string option
chop_prefix ~pre s removes pre from s if pre really is a prefix of s, returns None otherwise.
since
0.17
val chop_suffix : suf:string-> string ->string option
chop_suffix ~suf s removes suf from s if suf really is a suffix of s, returns None otherwise.
since
0.17
val take : int -> string -> string
take n s keeps only the n first chars of s.
since
0.17
val drop : int -> string -> string
drop n s removes the n first chars of s.
since
0.17
val take_drop : int -> string -> string * string
take_drop n s is take n s, drop n s.
since
0.17
val lines : string ->string list
lines s returns a list of the lines of s (splits along '\n').
unlines_iter iter concatenates all strings of iter, separated with '\n'.
since
3.2
val unlines_seq : string Stdlib.Seq.t-> string
unlines_seq seq concatenates all strings of seq, separated with '\n'.
since
3.2
val set : string -> int -> char -> string
set s i c creates a new string which is a copy of s, except for index i, which becomes c.
raises Invalid_argument
if i is an invalid index.
since
0.12
val iter : f:(char -> unit)-> string -> unit
iter ~f s applies function f on each character of s. Alias to String.iter.
since
0.12
val filter_map : f:(char ->char option)-> string -> string
filter_map ~f s calls (f a0) (f a1) … (f an) where a0 … an are the characters of s. It returns the string of characters ci such as f ai = Some ci (when f returns None, the corresponding element of s is discarded).
since
0.17
val filter : f:(char -> bool)-> string -> string
filter ~f s discards characters of s not satisfying f.
since
0.17
val flat_map : ?sep:string->f:(char -> string)-> string -> string
flat_map ?sep ~f s maps each chars of s to a string, then concatenates them all.
parameter sep
optional separator between each generated string.
since
0.12
val for_all : f:(char -> bool)-> string -> bool
for_all ~f s is true iff all characters of s satisfy the predicate f.
since
0.12
val exists : f:(char -> bool)-> string -> bool
exists ~f s is true iff some character of s satisfy the predicate f.
val split_on_char : by:char-> string ->string list
split_on_char ~by s splits the string s along the given char by.
since
1.2
val split : by:string-> string ->string list
split ~by s splits the string s along the given string by. Alias to Split.list_cpy.
since
1.2
Utils
val compare_versions : string -> string -> int
compare_versions s1 s2 compares version stringss1 and s2, considering that numbers are above text.
since
0.13
val compare_natural : string -> string -> int
compare_natural s1 s2 is the Natural Sort Order, comparing chunks of digits as natural numbers. https://en.wikipedia.org/wiki/Natural_sort_order
since
1.3
val edit_distance : ?cutoff:int-> string -> string -> int
edit_distance ?cutoff s1 s2 is the edition distance between the two strings s1 and s2. This satisfies the classical distance axioms: it is always positive, symmetric, and satisfies the formula distance s1 s2 + distance s2 s3 >= distance s1 s3.
parameter cutoff
if provided, it's a cap on both the number of iterations, and on the result. (since 3.0). This is useful if you just want to check whether the edit distance is less or equal than 2 (use cutoff of 3).
\ No newline at end of file
diff --git a/3.2/containers/CCUnix/.dune-keep b/3.2/containers/CCUnix/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers/CCUnix/Infix/index.html b/3.2/containers/CCUnix/Infix/index.html
new file mode 100644
index 00000000..a55ca621
--- /dev/null
+++ b/3.2/containers/CCUnix/Infix/index.html
@@ -0,0 +1,2 @@
+
+Infix (containers.CCUnix.Infix)
Module CCUnix.Infix
val (?|) : ('a, Stdlib.Buffer.t, unit, call_result) Stdlib.format4->'a
\ No newline at end of file
diff --git a/3.2/containers/CCUnix/index.html b/3.2/containers/CCUnix/index.html
new file mode 100644
index 00000000..fa87a0d3
--- /dev/null
+++ b/3.2/containers/CCUnix/index.html
@@ -0,0 +1,2 @@
+
+CCUnix (containers.CCUnix)
Module CCUnix
High-level Functions on top of Unix
Some useful functions built on top of Unix.
status: unstable
since
0.10
type'a or_error = ('a, string) Stdlib.result
type'a gen = unit ->'a option
Calling Commands
val escape_str : string -> string
Escape a string so it can be a shell argument.
type call_result = < stdout : string; stderr : string; status : Unix.process_status; errcode : int; >
val call_full : ?bufsize:int->?stdin:[ `Gen of string gen| `Str of string ]->?env:string array->('a, Stdlib.Buffer.t, unit, call_result) Stdlib.format4->'a
call_full cmd wraps the result of Unix.open_process_full cmd into an object. It reads the full stdout and stderr of the subprocess before returning.
parameter stdin
if provided, the generator or string is consumed and fed to the subprocess input channel, which is then closed.
parameter bufsize
buffer size used to read stdout and stderr.
parameter env
environment to run the command in.
val call : ?bufsize:int->?stdin:[ `Gen of string gen| `Str of string ]->?env:string array->('a, Stdlib.Buffer.t, unit, string * string * int) Stdlib.format4->'a
call cmd is similar to call_full cmd but returns a tuple stdout, stderr, errcode instead of an object.
val call_stdout : ?bufsize:int->?stdin:[ `Gen of string gen| `Str of string ]->?env:string array->('a, Stdlib.Buffer.t, unit, string) Stdlib.format4->'a
A subprocess for interactive usage (read/write channels line by line)
since
0.11
val async_call : ?env:string array->('a, Stdlib.Buffer.t, unit, async_call_result) Stdlib.format4->'a
Spawns a subprocess, like call, but the subprocess's channels are line generators and line sinks (for stdin). If p is async_call "cmd", then p#wait waits for the subprocess to die. Channels can be closed independently.
since
0.11
Accessors
since
0.11
val stdout : < stdout : 'a; .. > ->'a
val stderr : < stderr : 'a; .. > ->'a
val status : < status : 'a; .. > ->'a
val errcode : < errcode : 'a; .. > ->'a
Simple IO
val with_in : ?mode:int->?flags:Unix.open_flag list-> string ->f:(Stdlib.in_channel ->'a)->'a
Open an input file with the given optional flag list, calls the function on the input channel. When the function raises or returns, the channel is closed.
parameter flags
opening flags. Unix.O_RDONLY is used in any cases.
since
0.16
val with_out : ?mode:int->?flags:Unix.open_flag list-> string ->f:(Stdlib.out_channel ->'a)->'a
val with_process_out : string ->f:(Stdlib.out_channel ->'a)->'a
Open a shell command in a subprocess and obtain a handle to its stdin.
since
0.16
type process_full = < stdin : Stdlib.out_channel; stdout : Stdlib.in_channel; stderr : Stdlib.in_channel; close : Unix.process_status; >
Handle to a subprocess.
since
0.16
val with_process_full : ?env:string array-> string ->f:(process_full->'a)->'a
Open a subprocess and obtain a handle to its channels.
parameter env
environment to pass to the subprocess.
since
0.16
val ensure_session_leader : unit -> unit
On unix, call Unix.setsid() to make sure subprocesses die at the same time as the current process. Does nothing on windows. Idempotent: it can be called several times but will only have effects, if any, the first time.
since
2.8
Networking
val with_connection : Unix.sockaddr ->f:(Stdlib.in_channel -> Stdlib.out_channel ->'a)->'a
Wrap Unix.open_connection with a handler.
since
0.16
exceptionExitServer
val establish_server : Unix.sockaddr ->f:(Stdlib.in_channel -> Stdlib.out_channel ->_)-> unit
Listen on the address and calls the handler in a blocking fashion. Using Thread is recommended if handlers might take time. The callback should raise ExitServer to stop the loop.
with_file_lock ~kind filename f puts a lock on the offset 0 of the file named filename, calls f and returns its result after the file is unlocked. If f () raises an exception the exception is re-raised after the file is unlocked.
parameter kind
specifies whether the lock is read-only or read-write.
val with_temp_dir : ?mode:int->?dir:string-> string ->(string ->'a)->'a
Create a temporary directory, call the function, and then destroy the directory afterwards. Usage with_temp_dir pattern f.
parameter pattern
the naming pattern for the temporary directory. Helps avoiding collisions.
parameter mode
mode for the directory
parameter dir
the directory under which to make a temporary directory (default /tmp)
Note that this is implemented following the discussion at: https://discuss.ocaml.org/t/how-to-create-a-temporary-directory-in-ocaml/1815/
since
2.8
\ No newline at end of file
diff --git a/3.2/containers/CCUtf8_string/.dune-keep b/3.2/containers/CCUtf8_string/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers/CCUtf8_string/index.html b/3.2/containers/CCUtf8_string/index.html
new file mode 100644
index 00000000..e7b3a7a5
--- /dev/null
+++ b/3.2/containers/CCUtf8_string/index.html
@@ -0,0 +1,2 @@
+
+CCUtf8_string (containers.CCUtf8_string)
Translate the unicode codepoint to a list of utf-8 bytes. This can be used, for example, in combination with Buffer.add_char on a pre-allocated buffer to add the bytes one by one (despite its name, Buffer.add_char takes individual bytes, not unicode codepoints).
Conversion from a string without validating. CAUTION this is unsafe and can break all the other functions in this module. Use only if you're sure the string is valid UTF8. Upon iteration, if an invalid substring is met, Malformed will be raised.
\ No newline at end of file
diff --git a/3.2/containers/CCVector/.dune-keep b/3.2/containers/CCVector/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers/CCVector/index.html b/3.2/containers/CCVector/index.html
new file mode 100644
index 00000000..9ba4f08c
--- /dev/null
+++ b/3.2/containers/CCVector/index.html
@@ -0,0 +1,2 @@
+
+CCVector (containers.CCVector)
Module CCVector
Growable, mutable vector
type ro = [
| `RO
]
type rw = [
| `RW
]
type('a, 'mut) t
The type of a vector of elements of type 'a, with a mutability flat 'mut.
Truncate to the given size (remove elements above this size). Does nothing if the parameter is bigger than the current size. truncate was called shrink.
Sort the vector, returning a copy of it that is sorted w.r.t the given ordering. The vector itself is unchanged. The underlying array of the new vector can be smaller than the original one.
remove_and_shift v i remove the i-th element from v. Move elements that are after the i-th in v. Preserve the order of the elements in v. See remove_unordered for constant time function.
remove_unordered v i remove the i-th element from v. Does NOT preserve the order of the elements in v (might swap with the last element). See remove_and_shift if you want to keep the ordering.
Access the underlying shared array (do not modify!). unsafe_get_array v is longer than size v, but elements at higher index than size v are undefined (do not access!).
Range of integers, either ascending or descending (both included, therefore the result is never empty). Example: 1 -- 10 returns the vector [1;2;3;4;5;6;7;8;9;10].
to_seq v returns the sequence of elements of v in reverse order, that is, the last elements of v are iterated on first. Renamed from to_std_seq since 3.0.
pp ~pp_start ~pp_stop ~pp_sep pp_item ppf v formats the vector v on ppf. Each element is formatted with pp_item, pp_start is called at the beginning, pp_stop is called at the end, pp_sep is called between each elements. By defaults pp_start and pp_stop does nothing and pp_sep defaults to (fun out -> Format.fprintf out ",@ ").
Let operators on OCaml >= 4.08.0, nothing otherwise
\ No newline at end of file
diff --git a/3.2/containers/Containers/.dune-keep b/3.2/containers/Containers/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers/Containers/Hashtbl/Make/index.html b/3.2/containers/Containers/Hashtbl/Make/index.html
new file mode 100644
index 00000000..7d07eee0
--- /dev/null
+++ b/3.2/containers/Containers/Hashtbl/Make/index.html
@@ -0,0 +1,2 @@
+
+Make (containers.Containers.Hashtbl.Make)
\ No newline at end of file
diff --git a/3.2/containers/Containers/Hashtbl/MakeSeeded/argument-1-H/index.html b/3.2/containers/Containers/Hashtbl/MakeSeeded/argument-1-H/index.html
new file mode 100644
index 00000000..23402f15
--- /dev/null
+++ b/3.2/containers/Containers/Hashtbl/MakeSeeded/argument-1-H/index.html
@@ -0,0 +1,2 @@
+
+1-H (containers.Containers.Hashtbl.MakeSeeded.1-H)
\ No newline at end of file
diff --git a/3.2/containers/Containers/Hashtbl/MakeSeeded/index.html b/3.2/containers/Containers/Hashtbl/MakeSeeded/index.html
new file mode 100644
index 00000000..324ef2d5
--- /dev/null
+++ b/3.2/containers/Containers/Hashtbl/MakeSeeded/index.html
@@ -0,0 +1,2 @@
+
+MakeSeeded (containers.Containers.Hashtbl.MakeSeeded)
\ No newline at end of file
diff --git a/3.2/containers/Containers/Hashtbl/index.html b/3.2/containers/Containers/Hashtbl/index.html
new file mode 100644
index 00000000..6fb965d8
--- /dev/null
+++ b/3.2/containers/Containers/Hashtbl/index.html
@@ -0,0 +1,2 @@
+
+Hashtbl (containers.Containers.Hashtbl)
keys tbl f iterates on keys (similar order as Hashtbl.iter).
val values : ('a, 'b) Stdlib.Hashtbl.t->'bCCHashtbl.iter
values tbl f iterates on values in the table tbl.
val keys_list : ('a, 'b) Stdlib.Hashtbl.t->'a list
keys_list tbl is the list of keys in tbl. If the key is in the Hashtable multiple times, all occurrences will be returned.
since
0.8
val values_list : ('a, 'b) Stdlib.Hashtbl.t->'b list
values_list tbl is the list of values in tbl.
since
0.8
val map_list : ('a->'b->'c)->('a, 'b) Stdlib.Hashtbl.t->'c list
map_list f tbl maps on a tbl's items. Collect into a list.
val incr : ?by:int->('a, int) Stdlib.Hashtbl.t->'a-> unit
incr ?by tbl x increments or initializes the counter associated with x. If get tbl x = None, then after update, get tbl x = Some 1; otherwise, if get tbl x = Some n, now get tbl x = Some (n+1).
parameter by
if specified, the int value is incremented by by rather than 1.
since
0.16
val decr : ?by:int->('a, int) Stdlib.Hashtbl.t->'a-> unit
decr ?by tbl x is like incr but subtract 1 (or the value of by). If the value reaches 0, the key is removed from the table. This does nothing if the key is not already present in the table.
since
0.16
val to_iter : ('a, 'b) Stdlib.Hashtbl.t->('a * 'b)CCHashtbl.iter
Iterate on bindings in the table.
since
2.8
val add_list : ('a, 'b list) Stdlib.Hashtbl.t->'a->'b-> unit
add_list tbl x y adds y to the list x is bound to. If x is not bound, it becomes bound to y.
since
0.16
val add_iter : ('a, 'b) Stdlib.Hashtbl.t->('a * 'b)CCHashtbl.iter-> unit
Add the corresponding pairs to the table, using Hashtbl.add.
since
2.8
val add_seq : ('a, 'b) Stdlib.Hashtbl.t->('a * 'b) Stdlib.Seq.t-> unit
Add the corresponding pairs to the table, using Hashtbl.add. Renamed from add_std_seq since 3.0.
since
3.0
val of_iter : ('a * 'b)CCHashtbl.iter->('a, 'b) Stdlib.Hashtbl.t
From the given bindings, added in order.
since
2.8
val of_seq : ('a * 'b) Stdlib.Seq.t->('a, 'b) Stdlib.Hashtbl.t
From the given bindings, added in order. Renamed from of_std_seq since 3.0.
since
3.0
val add_iter_count : ('a, int) Stdlib.Hashtbl.t->'aCCHashtbl.iter-> unit
add_iter_count tbl i increments the count of each element of i by calling incr. This is useful for counting how many times each element of i occurs.
since
2.8
val add_seq_count : ('a, int) Stdlib.Hashtbl.t->'a Stdlib.Seq.t-> unit
add_seq_count tbl seq increments the count of each element of seq by calling incr. This is useful for counting how many times each element of seq occurs. Renamed from add_std_seq_count since 3.0.
since
3.0
val of_iter_count : 'aCCHashtbl.iter->('a, int) Stdlib.Hashtbl.t
Like add_seq_count, but allocates a new table and returns it.
since
2.8
val of_seq_count : 'a Stdlib.Seq.t->('a, int) Stdlib.Hashtbl.t
Like add_seq_count, but allocates a new table and returns it. Renamed from of_std_seq_count since 3.0.
since
3.0
val to_list : ('a, 'b) Stdlib.Hashtbl.t->('a * 'b) list
to_list tbl returns the list of (key,value) bindings (order unspecified).
val of_list : ('a * 'b) list->('a, 'b) Stdlib.Hashtbl.t
of_list l builds a table from the given list l of bindings k_i -> v_i, added in order using add. If a key occurs several times, it will be added several times, and the visible binding will be the last one.
val update : ('a, 'b) Stdlib.Hashtbl.t->f:('a->'b option->'b option)->k:'a-> unit
update tbl ~f ~k updates key k by calling f k (Some v) if k was mapped to v, or f k None otherwise; if the call returns None then k is removed/stays removed, if the call returns Some v' then the binding k -> v' is inserted using Hashtbl.replace.
since
0.14
val get_or_add : ('a, 'b) Stdlib.Hashtbl.t->f:('a->'b)->k:'a->'b
get_or_add tbl ~k ~f finds and returns the binding of k in tbl, if it exists. If it does not exist, then f k is called to obtain a new binding v; k -> v is added to tbl and v is returned.
pp ~pp_start ~pp_stop ~pp_sep ~pp arrow pp_k pp_v returns a table printer given a pp_k printer for individual key and a pp_v printer for individual value. pp_start and pp_stop control the opening and closing delimiters, by default print nothing. pp_sep control the separator between binding. pp_arrow control the arrow between the key and value. Renamed from print since 2.0.
\ No newline at end of file
diff --git a/3.2/containers/Containers/Hashtbl/module-type-HashedType/index.html b/3.2/containers/Containers/Hashtbl/module-type-HashedType/index.html
new file mode 100644
index 00000000..718de074
--- /dev/null
+++ b/3.2/containers/Containers/Hashtbl/module-type-HashedType/index.html
@@ -0,0 +1,2 @@
+
+HashedType (containers.Containers.Hashtbl.HashedType)
\ No newline at end of file
diff --git a/3.2/containers/Containers/Hashtbl/module-type-S'/index.html b/3.2/containers/Containers/Hashtbl/module-type-S'/index.html
new file mode 100644
index 00000000..c1787fbf
--- /dev/null
+++ b/3.2/containers/Containers/Hashtbl/module-type-S'/index.html
@@ -0,0 +1,2 @@
+
+S' (containers.Containers.Hashtbl.S')
incr ?by tbl x increments or initializes the counter associated with x. If get tbl x = None, then after update, get tbl x = Some 1; otherwise, if get tbl x = Some n, now get tbl x = Some (n+1).
parameter by
if specified, the int value is incremented by by rather than 1.
decr ?by tbl x is like incr but subtract 1 (or the value of by). If the value reaches 0, the key is removed from the table. This does nothing if the key is not already present in the table.
add_iter_count tbl i increments the count of each element of i by calling incr. This is useful for counting how many times each element of i occurs.
since
2.8
val add_seq_count : int t->key Stdlib.Seq.t-> unit
add_seq_count tbl seq increments the count of each element of seq by calling incr. This is useful for counting how many times each element of seq occurs. Renamed from of_std_seq_count since 3.0.
of_list l builds a table from the given list l of bindings k_i -> v_i, added in order using add. If a key occurs several times, it will be added several times, and the visible binding will be the last one.
val update : 'at->f:(key->'a option->'a option)->k:key-> unit
update tbl ~f ~k updates key k by calling f k (Some v) if k was mapped to v, or f k None otherwise; if the call returns None then k is removed/stays removed, if the call returns Some v' then the binding k -> v' is inserted using Hashtbl.replace.
get_or_add tbl ~k ~f finds and returns the binding of k in tbl, if it exists. If it does not exist, then f k is called to obtain a new binding v; k -> v is added to tbl and v is returned.
pp ~pp_start ~pp_stop ~pp_sep ~pp arrow pp_k pp_v returns a table printer given a pp_k printer for individual key and a pp_v printer for individual value. pp_start and pp_stop control the opening and closing delimiters, by default print nothing. pp_sep control the separator between binding. pp_arrow control the arrow between the key and value. Renamed from print since 2.0.
since
0.13
\ No newline at end of file
diff --git a/3.2/containers/Containers/Hashtbl/module-type-S/index.html b/3.2/containers/Containers/Hashtbl/module-type-S/index.html
new file mode 100644
index 00000000..6dc11501
--- /dev/null
+++ b/3.2/containers/Containers/Hashtbl/module-type-S/index.html
@@ -0,0 +1,2 @@
+
+S (containers.Containers.Hashtbl.S)
\ No newline at end of file
diff --git a/3.2/containers/Containers/Hashtbl/module-type-SeededHashedType/index.html b/3.2/containers/Containers/Hashtbl/module-type-SeededHashedType/index.html
new file mode 100644
index 00000000..10e5a11a
--- /dev/null
+++ b/3.2/containers/Containers/Hashtbl/module-type-SeededHashedType/index.html
@@ -0,0 +1,2 @@
+
+SeededHashedType (containers.Containers.Hashtbl.SeededHashedType)
\ No newline at end of file
diff --git a/3.2/containers/Containers/Hashtbl/module-type-SeededS/index.html b/3.2/containers/Containers/Hashtbl/module-type-SeededS/index.html
new file mode 100644
index 00000000..35702b9b
--- /dev/null
+++ b/3.2/containers/Containers/Hashtbl/module-type-SeededS/index.html
@@ -0,0 +1,2 @@
+
+SeededS (containers.Containers.Hashtbl.SeededS)
\ No newline at end of file
diff --git a/3.2/containers/Containers/index.html b/3.2/containers/Containers/index.html
new file mode 100644
index 00000000..249f72e8
--- /dev/null
+++ b/3.2/containers/Containers/index.html
@@ -0,0 +1,2 @@
+
+Containers (containers.Containers)
\ No newline at end of file
diff --git a/3.2/containers/ContainersLabels/.dune-keep b/3.2/containers/ContainersLabels/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers/ContainersLabels/Hashtbl/Make/index.html b/3.2/containers/ContainersLabels/Hashtbl/Make/index.html
new file mode 100644
index 00000000..18468ec0
--- /dev/null
+++ b/3.2/containers/ContainersLabels/Hashtbl/Make/index.html
@@ -0,0 +1,2 @@
+
+Make (containers.ContainersLabels.Hashtbl.Make)
\ No newline at end of file
diff --git a/3.2/containers/ContainersLabels/Hashtbl/MakeSeeded/argument-1-H/index.html b/3.2/containers/ContainersLabels/Hashtbl/MakeSeeded/argument-1-H/index.html
new file mode 100644
index 00000000..16fcc30a
--- /dev/null
+++ b/3.2/containers/ContainersLabels/Hashtbl/MakeSeeded/argument-1-H/index.html
@@ -0,0 +1,2 @@
+
+1-H (containers.ContainersLabels.Hashtbl.MakeSeeded.1-H)
\ No newline at end of file
diff --git a/3.2/containers/ContainersLabels/Hashtbl/MakeSeeded/index.html b/3.2/containers/ContainersLabels/Hashtbl/MakeSeeded/index.html
new file mode 100644
index 00000000..c5eab6dc
--- /dev/null
+++ b/3.2/containers/ContainersLabels/Hashtbl/MakeSeeded/index.html
@@ -0,0 +1,2 @@
+
+MakeSeeded (containers.ContainersLabels.Hashtbl.MakeSeeded)
\ No newline at end of file
diff --git a/3.2/containers/ContainersLabels/Hashtbl/index.html b/3.2/containers/ContainersLabels/Hashtbl/index.html
new file mode 100644
index 00000000..4aa1eeea
--- /dev/null
+++ b/3.2/containers/ContainersLabels/Hashtbl/index.html
@@ -0,0 +1,2 @@
+
+Hashtbl (containers.ContainersLabels.Hashtbl)
keys tbl f iterates on keys (similar order as Hashtbl.iter).
val values : ('a, 'b) Stdlib.Hashtbl.t->'bCCHashtbl.iter
values tbl f iterates on values in the table tbl.
val keys_list : ('a, 'b) Stdlib.Hashtbl.t->'a list
keys_list tbl is the list of keys in tbl. If the key is in the Hashtable multiple times, all occurrences will be returned.
since
0.8
val values_list : ('a, 'b) Stdlib.Hashtbl.t->'b list
values_list tbl is the list of values in tbl.
since
0.8
val map_list : ('a->'b->'c)->('a, 'b) Stdlib.Hashtbl.t->'c list
map_list f tbl maps on a tbl's items. Collect into a list.
val incr : ?by:int->('a, int) Stdlib.Hashtbl.t->'a-> unit
incr ?by tbl x increments or initializes the counter associated with x. If get tbl x = None, then after update, get tbl x = Some 1; otherwise, if get tbl x = Some n, now get tbl x = Some (n+1).
parameter by
if specified, the int value is incremented by by rather than 1.
since
0.16
val decr : ?by:int->('a, int) Stdlib.Hashtbl.t->'a-> unit
decr ?by tbl x is like incr but subtract 1 (or the value of by). If the value reaches 0, the key is removed from the table. This does nothing if the key is not already present in the table.
since
0.16
val to_iter : ('a, 'b) Stdlib.Hashtbl.t->('a * 'b)CCHashtbl.iter
Iterate on bindings in the table.
since
2.8
val add_list : ('a, 'b list) Stdlib.Hashtbl.t->'a->'b-> unit
add_list tbl x y adds y to the list x is bound to. If x is not bound, it becomes bound to y.
since
0.16
val add_iter : ('a, 'b) Stdlib.Hashtbl.t->('a * 'b)CCHashtbl.iter-> unit
Add the corresponding pairs to the table, using Hashtbl.add.
since
2.8
val add_seq : ('a, 'b) Stdlib.Hashtbl.t->('a * 'b) Stdlib.Seq.t-> unit
Add the corresponding pairs to the table, using Hashtbl.add. Renamed from add_std_seq since 3.0.
since
3.0
val of_iter : ('a * 'b)CCHashtbl.iter->('a, 'b) Stdlib.Hashtbl.t
From the given bindings, added in order.
since
2.8
val of_seq : ('a * 'b) Stdlib.Seq.t->('a, 'b) Stdlib.Hashtbl.t
From the given bindings, added in order. Renamed from of_std_seq since 3.0.
since
3.0
val add_iter_count : ('a, int) Stdlib.Hashtbl.t->'aCCHashtbl.iter-> unit
add_iter_count tbl i increments the count of each element of i by calling incr. This is useful for counting how many times each element of i occurs.
since
2.8
val add_seq_count : ('a, int) Stdlib.Hashtbl.t->'a Stdlib.Seq.t-> unit
add_seq_count tbl seq increments the count of each element of seq by calling incr. This is useful for counting how many times each element of seq occurs. Renamed from add_std_seq_count since 3.0.
since
3.0
val of_iter_count : 'aCCHashtbl.iter->('a, int) Stdlib.Hashtbl.t
Like add_seq_count, but allocates a new table and returns it.
since
2.8
val of_seq_count : 'a Stdlib.Seq.t->('a, int) Stdlib.Hashtbl.t
Like add_seq_count, but allocates a new table and returns it. Renamed from of_std_seq_count since 3.0.
since
3.0
val to_list : ('a, 'b) Stdlib.Hashtbl.t->('a * 'b) list
to_list tbl returns the list of (key,value) bindings (order unspecified).
val of_list : ('a * 'b) list->('a, 'b) Stdlib.Hashtbl.t
of_list l builds a table from the given list l of bindings k_i -> v_i, added in order using add. If a key occurs several times, it will be added several times, and the visible binding will be the last one.
val update : ('a, 'b) Stdlib.Hashtbl.t->f:('a->'b option->'b option)->k:'a-> unit
update tbl ~f ~k updates key k by calling f k (Some v) if k was mapped to v, or f k None otherwise; if the call returns None then k is removed/stays removed, if the call returns Some v' then the binding k -> v' is inserted using Hashtbl.replace.
since
0.14
val get_or_add : ('a, 'b) Stdlib.Hashtbl.t->f:('a->'b)->k:'a->'b
get_or_add tbl ~k ~f finds and returns the binding of k in tbl, if it exists. If it does not exist, then f k is called to obtain a new binding v; k -> v is added to tbl and v is returned.
pp ~pp_start ~pp_stop ~pp_sep ~pp arrow pp_k pp_v returns a table printer given a pp_k printer for individual key and a pp_v printer for individual value. pp_start and pp_stop control the opening and closing delimiters, by default print nothing. pp_sep control the separator between binding. pp_arrow control the arrow between the key and value. Renamed from print since 2.0.
\ No newline at end of file
diff --git a/3.2/containers/ContainersLabels/Hashtbl/module-type-HashedType/index.html b/3.2/containers/ContainersLabels/Hashtbl/module-type-HashedType/index.html
new file mode 100644
index 00000000..34c552fe
--- /dev/null
+++ b/3.2/containers/ContainersLabels/Hashtbl/module-type-HashedType/index.html
@@ -0,0 +1,2 @@
+
+HashedType (containers.ContainersLabels.Hashtbl.HashedType)
\ No newline at end of file
diff --git a/3.2/containers/ContainersLabels/Hashtbl/module-type-S'/index.html b/3.2/containers/ContainersLabels/Hashtbl/module-type-S'/index.html
new file mode 100644
index 00000000..1c76a6f0
--- /dev/null
+++ b/3.2/containers/ContainersLabels/Hashtbl/module-type-S'/index.html
@@ -0,0 +1,2 @@
+
+S' (containers.ContainersLabels.Hashtbl.S')
incr ?by tbl x increments or initializes the counter associated with x. If get tbl x = None, then after update, get tbl x = Some 1; otherwise, if get tbl x = Some n, now get tbl x = Some (n+1).
parameter by
if specified, the int value is incremented by by rather than 1.
decr ?by tbl x is like incr but subtract 1 (or the value of by). If the value reaches 0, the key is removed from the table. This does nothing if the key is not already present in the table.
add_iter_count tbl i increments the count of each element of i by calling incr. This is useful for counting how many times each element of i occurs.
since
2.8
val add_seq_count : int t->key Stdlib.Seq.t-> unit
add_seq_count tbl seq increments the count of each element of seq by calling incr. This is useful for counting how many times each element of seq occurs. Renamed from of_std_seq_count since 3.0.
of_list l builds a table from the given list l of bindings k_i -> v_i, added in order using add. If a key occurs several times, it will be added several times, and the visible binding will be the last one.
val update : 'at->f:(key->'a option->'a option)->k:key-> unit
update tbl ~f ~k updates key k by calling f k (Some v) if k was mapped to v, or f k None otherwise; if the call returns None then k is removed/stays removed, if the call returns Some v' then the binding k -> v' is inserted using Hashtbl.replace.
get_or_add tbl ~k ~f finds and returns the binding of k in tbl, if it exists. If it does not exist, then f k is called to obtain a new binding v; k -> v is added to tbl and v is returned.
pp ~pp_start ~pp_stop ~pp_sep ~pp arrow pp_k pp_v returns a table printer given a pp_k printer for individual key and a pp_v printer for individual value. pp_start and pp_stop control the opening and closing delimiters, by default print nothing. pp_sep control the separator between binding. pp_arrow control the arrow between the key and value. Renamed from print since 2.0.
since
0.13
\ No newline at end of file
diff --git a/3.2/containers/ContainersLabels/Hashtbl/module-type-S/index.html b/3.2/containers/ContainersLabels/Hashtbl/module-type-S/index.html
new file mode 100644
index 00000000..ac13a67c
--- /dev/null
+++ b/3.2/containers/ContainersLabels/Hashtbl/module-type-S/index.html
@@ -0,0 +1,2 @@
+
+S (containers.ContainersLabels.Hashtbl.S)
\ No newline at end of file
diff --git a/3.2/containers/ContainersLabels/Hashtbl/module-type-SeededHashedType/index.html b/3.2/containers/ContainersLabels/Hashtbl/module-type-SeededHashedType/index.html
new file mode 100644
index 00000000..e2138560
--- /dev/null
+++ b/3.2/containers/ContainersLabels/Hashtbl/module-type-SeededHashedType/index.html
@@ -0,0 +1,2 @@
+
+SeededHashedType (containers.ContainersLabels.Hashtbl.SeededHashedType)
\ No newline at end of file
diff --git a/3.2/containers/ContainersLabels/Hashtbl/module-type-SeededS/index.html b/3.2/containers/ContainersLabels/Hashtbl/module-type-SeededS/index.html
new file mode 100644
index 00000000..86f45d40
--- /dev/null
+++ b/3.2/containers/ContainersLabels/Hashtbl/module-type-SeededS/index.html
@@ -0,0 +1,2 @@
+
+SeededS (containers.ContainersLabels.Hashtbl.SeededS)
\ No newline at end of file
diff --git a/3.2/containers/ContainersLabels/index.html b/3.2/containers/ContainersLabels/index.html
new file mode 100644
index 00000000..167cdb74
--- /dev/null
+++ b/3.2/containers/ContainersLabels/index.html
@@ -0,0 +1,2 @@
+
+ContainersLabels (containers.ContainersLabels)
\ No newline at end of file
diff --git a/3.2/containers/Containers_top/.dune-keep b/3.2/containers/Containers_top/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/3.2/containers/Containers_top/index.html b/3.2/containers/Containers_top/index.html
new file mode 100644
index 00000000..28f002a7
--- /dev/null
+++ b/3.2/containers/Containers_top/index.html
@@ -0,0 +1,2 @@
+
+Containers_top (containers.Containers_top)
Module Containers_top
type'a printer = Stdlib.Format.formatter ->'a-> unit
val eval_exn : string -> bool
val install_printer : string -> unit
val install_printers : string list-> unit
\ No newline at end of file
diff --git a/3.2/containers/index.html b/3.2/containers/index.html
new file mode 100644
index 00000000..f4d6c1bf
--- /dev/null
+++ b/3.2/containers/index.html
@@ -0,0 +1,2 @@
+
+index (containers.index)
containers index
Library containers
This library exposes the following toplevel modules:
The entry point of this library is the module: Containers_top.
Library containers.unix
The entry point of this library is the module: CCUnix.
\ No newline at end of file
diff --git a/3.2/highlight.pack.js b/3.2/highlight.pack.js
new file mode 100644
index 00000000..2e55d491
--- /dev/null
+++ b/3.2/highlight.pack.js
@@ -0,0 +1,2 @@
+/*! highlight.js v9.15.8 | BSD3 License | git.io/hljslicense */
+!function(e){var n="object"==typeof window&&window||"object"==typeof self&&self;"undefined"!=typeof exports?e(exports):n&&(n.hljs=e({}),"function"==typeof define&&define.amd&&define([],function(){return n.hljs}))}(function(a){var f=[],u=Object.keys,N={},c={},n=/^(no-?highlight|plain|text)$/i,s=/\blang(?:uage)?-([\w-]+)\b/i,t=/((^(<[^>]+>|\t|)+|(?:\n)))/gm,r={case_insensitive:"cI",lexemes:"l",contains:"c",keywords:"k",subLanguage:"sL",className:"cN",begin:"b",beginKeywords:"bK",end:"e",endsWithParent:"eW",illegal:"i",excludeBegin:"eB",excludeEnd:"eE",returnBegin:"rB",returnEnd:"rE",relevance:"r",variants:"v",IDENT_RE:"IR",UNDERSCORE_IDENT_RE:"UIR",NUMBER_RE:"NR",C_NUMBER_RE:"CNR",BINARY_NUMBER_RE:"BNR",RE_STARTERS_RE:"RSR",BACKSLASH_ESCAPE:"BE",APOS_STRING_MODE:"ASM",QUOTE_STRING_MODE:"QSM",PHRASAL_WORDS_MODE:"PWM",C_LINE_COMMENT_MODE:"CLCM",C_BLOCK_COMMENT_MODE:"CBCM",HASH_COMMENT_MODE:"HCM",NUMBER_MODE:"NM",C_NUMBER_MODE:"CNM",BINARY_NUMBER_MODE:"BNM",CSS_NUMBER_MODE:"CSSNM",REGEXP_MODE:"RM",TITLE_MODE:"TM",UNDERSCORE_TITLE_MODE:"UTM",COMMENT:"C",beginRe:"bR",endRe:"eR",illegalRe:"iR",lexemesRe:"lR",terminators:"t",terminator_end:"tE"},b="",h={classPrefix:"hljs-",tabReplace:null,useBR:!1,languages:void 0};function _(e){return e.replace(/&/g,"&").replace(//g,">")}function E(e){return e.nodeName.toLowerCase()}function v(e,n){var t=e&&e.exec(n);return t&&0===t.index}function l(e){return n.test(e)}function g(e){var n,t={},r=Array.prototype.slice.call(arguments,1);for(n in e)t[n]=e[n];return r.forEach(function(e){for(n in e)t[n]=e[n]}),t}function R(e){var a=[];return function e(n,t){for(var r=n.firstChild;r;r=r.nextSibling)3===r.nodeType?t+=r.nodeValue.length:1===r.nodeType&&(a.push({event:"start",offset:t,node:r}),t=e(r,t),E(r).match(/br|hr|img|input/)||a.push({event:"stop",offset:t,node:r}));return t}(e,0),a}function i(e){if(r&&!e.langApiRestored){for(var n in e.langApiRestored=!0,r)e[n]&&(e[r[n]]=e[n]);(e.c||[]).concat(e.v||[]).forEach(i)}}function m(o){function s(e){return e&&e.source||e}function c(e,n){return new RegExp(s(e),"m"+(o.cI?"i":"")+(n?"g":""))}!function n(t,e){if(!t.compiled){if(t.compiled=!0,t.k=t.k||t.bK,t.k){function r(t,e){o.cI&&(e=e.toLowerCase()),e.split(" ").forEach(function(e){var n=e.split("|");a[n[0]]=[t,n[1]?Number(n[1]):1]})}var a={};"string"==typeof t.k?r("keyword",t.k):u(t.k).forEach(function(e){r(e,t.k[e])}),t.k=a}t.lR=c(t.l||/\w+/,!0),e&&(t.bK&&(t.b="\\b("+t.bK.split(" ").join("|")+")\\b"),t.b||(t.b=/\B|\b/),t.bR=c(t.b),t.endSameAsBegin&&(t.e=t.b),t.e||t.eW||(t.e=/\B|\b/),t.e&&(t.eR=c(t.e)),t.tE=s(t.e)||"",t.eW&&e.tE&&(t.tE+=(t.e?"|":"")+e.tE)),t.i&&(t.iR=c(t.i)),null==t.r&&(t.r=1),t.c||(t.c=[]),t.c=Array.prototype.concat.apply([],t.c.map(function(e){return function(n){return n.v&&!n.cached_variants&&(n.cached_variants=n.v.map(function(e){return g(n,{v:null},e)})),n.cached_variants||n.eW&&[g(n)]||[n]}("self"===e?t:e)})),t.c.forEach(function(e){n(e,t)}),t.starts&&n(t.starts,e);var i=t.c.map(function(e){return e.bK?"\\.?(?:"+e.b+")\\.?":e.b}).concat([t.tE,t.i]).map(s).filter(Boolean);t.t=i.length?c(function(e,n){for(var t=/\[(?:[^\\\]]|\\.)*\]|\(\??|\\([1-9][0-9]*)|\\./,r=0,a="",i=0;i')+n+(t?"":b):n}function o(){E+=null!=l.sL?function(){var e="string"==typeof l.sL;if(e&&!N[l.sL])return _(g);var n=e?C(l.sL,g,!0,f[l.sL]):O(g,l.sL.length?l.sL:void 0);return 0")+'"');return g+=n,n.length||1}var s=B(e);if(!s)throw new Error('Unknown language: "'+e+'"');m(s);var a,l=t||s,f={},E="";for(a=l;a!==s;a=a.parent)a.cN&&(E=c(a.cN,"",!0)+E);var g="",R=0;try{for(var d,p,M=0;l.t.lastIndex=M,d=l.t.exec(n);)p=r(n.substring(M,d.index),d[0]),M=d.index+p;for(r(n.substr(M)),a=l;a.parent;a=a.parent)a.cN&&(E+=b);return{r:R,value:E,language:e,top:l}}catch(e){if(e.message&&-1!==e.message.indexOf("Illegal"))return{r:0,value:_(n)};throw e}}function O(t,e){e=e||h.languages||u(N);var r={r:0,value:_(t)},a=r;return e.filter(B).filter(M).forEach(function(e){var n=C(e,t,!1);n.language=e,n.r>a.r&&(a=n),n.r>r.r&&(a=r,r=n)}),a.language&&(r.second_best=a),r}function d(e){return h.tabReplace||h.useBR?e.replace(t,function(e,n){return h.useBR&&"\n"===e?" ":h.tabReplace?n.replace(/\t/g,h.tabReplace):""}):e}function o(e){var n,t,r,a,i,o=function(e){var n,t,r,a,i=e.className+" ";if(i+=e.parentNode?e.parentNode.className:"",t=s.exec(i))return B(t[1])?t[1]:"no-highlight";for(n=0,r=(i=i.split(/\s+/)).length;n/g,"\n"):n=e,i=n.textContent,r=o?C(o,i,!0):O(i),(t=R(n)).length&&((a=document.createElementNS("http://www.w3.org/1999/xhtml","div")).innerHTML=r.value,r.value=function(e,n,t){var r=0,a="",i=[];function o(){return e.length&&n.length?e[0].offset!==n[0].offset?e[0].offset"}function u(e){a+=""+E(e)+">"}function s(e){("start"===e.event?c:u)(e.node)}for(;e.length||n.length;){var l=o();if(a+=_(t.substring(r,l[0].offset)),r=l[0].offset,l===e){for(i.reverse().forEach(u);s(l.splice(0,1)[0]),(l=o())===e&&l.length&&l[0].offset===r;);i.reverse().forEach(c)}else"start"===l[0].event?i.push(l[0].node):i.pop(),s(l.splice(0,1)[0])}return a+_(t.substr(r))}(t,R(a),i)),r.value=d(r.value),e.innerHTML=r.value,e.className=function(e,n,t){var r=n?c[n]:t,a=[e.trim()];return e.match(/\bhljs\b/)||a.push("hljs"),-1===e.indexOf(r)&&a.push(r),a.join(" ").trim()}(e.className,o,r.language),e.result={language:r.language,re:r.r},r.second_best&&(e.second_best={language:r.second_best.language,re:r.second_best.r}))}function p(){if(!p.called){p.called=!0;var e=document.querySelectorAll("pre code");f.forEach.call(e,o)}}function B(e){return e=(e||"").toLowerCase(),N[e]||N[c[e]]}function M(e){var n=B(e);return n&&!n.disableAutodetect}return a.highlight=C,a.highlightAuto=O,a.fixMarkup=d,a.highlightBlock=o,a.configure=function(e){h=g(h,e)},a.initHighlighting=p,a.initHighlightingOnLoad=function(){addEventListener("DOMContentLoaded",p,!1),addEventListener("load",p,!1)},a.registerLanguage=function(n,e){var t=N[n]=e(a);i(t),t.aliases&&t.aliases.forEach(function(e){c[e]=n})},a.listLanguages=function(){return u(N)},a.getLanguage=B,a.autoDetection=M,a.inherit=g,a.IR=a.IDENT_RE="[a-zA-Z]\\w*",a.UIR=a.UNDERSCORE_IDENT_RE="[a-zA-Z_]\\w*",a.NR=a.NUMBER_RE="\\b\\d+(\\.\\d+)?",a.CNR=a.C_NUMBER_RE="(-?)(\\b0[xX][a-fA-F0-9]+|(\\b\\d+(\\.\\d*)?|\\.\\d+)([eE][-+]?\\d+)?)",a.BNR=a.BINARY_NUMBER_RE="\\b(0b[01]+)",a.RSR=a.RE_STARTERS_RE="!|!=|!==|%|%=|&|&&|&=|\\*|\\*=|\\+|\\+=|,|-|-=|/=|/|:|;|<<|<<=|<=|<|===|==|=|>>>=|>>=|>=|>>>|>>|>|\\?|\\[|\\{|\\(|\\^|\\^=|\\||\\|=|\\|\\||~",a.BE=a.BACKSLASH_ESCAPE={b:"\\\\[\\s\\S]",r:0},a.ASM=a.APOS_STRING_MODE={cN:"string",b:"'",e:"'",i:"\\n",c:[a.BE]},a.QSM=a.QUOTE_STRING_MODE={cN:"string",b:'"',e:'"',i:"\\n",c:[a.BE]},a.PWM=a.PHRASAL_WORDS_MODE={b:/\b(a|an|the|are|I'm|isn't|don't|doesn't|won't|but|just|should|pretty|simply|enough|gonna|going|wtf|so|such|will|you|your|they|like|more)\b/},a.C=a.COMMENT=function(e,n,t){var r=a.inherit({cN:"comment",b:e,e:n,c:[]},t||{});return r.c.push(a.PWM),r.c.push({cN:"doctag",b:"(?:TODO|FIXME|NOTE|BUG|XXX):",r:0}),r},a.CLCM=a.C_LINE_COMMENT_MODE=a.C("//","$"),a.CBCM=a.C_BLOCK_COMMENT_MODE=a.C("/\\*","\\*/"),a.HCM=a.HASH_COMMENT_MODE=a.C("#","$"),a.NM=a.NUMBER_MODE={cN:"number",b:a.NR,r:0},a.CNM=a.C_NUMBER_MODE={cN:"number",b:a.CNR,r:0},a.BNM=a.BINARY_NUMBER_MODE={cN:"number",b:a.BNR,r:0},a.CSSNM=a.CSS_NUMBER_MODE={cN:"number",b:a.NR+"(%|em|ex|ch|rem|vw|vh|vmin|vmax|cm|mm|in|pt|pc|px|deg|grad|rad|turn|s|ms|Hz|kHz|dpi|dpcm|dppx)?",r:0},a.RM=a.REGEXP_MODE={cN:"regexp",b:/\//,e:/\/[gimuy]*/,i:/\n/,c:[a.BE,{b:/\[/,e:/\]/,r:0,c:[a.BE]}]},a.TM=a.TITLE_MODE={cN:"title",b:a.IR,r:0},a.UTM=a.UNDERSCORE_TITLE_MODE={cN:"title",b:a.UIR,r:0},a.METHOD_GUARD={b:"\\.\\s*"+a.UIR,r:0},a});hljs.registerLanguage("ocaml",function(e){return{aliases:["ml"],k:{keyword:"and as assert asr begin class constraint do done downto else end exception external for fun function functor if in include inherit! inherit initializer land lazy let lor lsl lsr lxor match method!|10 method mod module mutable new object of open! open or private rec sig struct then to try type val! val virtual when while with parser value",built_in:"array bool bytes char exn|5 float int int32 int64 list lazy_t|5 nativeint|5 string unit in_channel out_channel ref",literal:"true false"},i:/\/\/|>>/,l:"[a-z_]\\w*!?",c:[{cN:"literal",b:"\\[(\\|\\|)?\\]|\\(\\)",r:0},e.C("\\(\\*","\\*\\)",{c:["self"]}),{cN:"symbol",b:"'[A-Za-z_](?!')[\\w']*"},{cN:"type",b:"`[A-Z][\\w']*"},{cN:"type",b:"\\b[A-Z][\\w']*",r:0},{b:"[a-z_]\\w*'[\\w']*",r:0},e.inherit(e.ASM,{cN:"string",r:0}),e.inherit(e.QSM,{i:null}),{cN:"number",b:"\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)",r:0},{b:/[-=]>/}]}});hljs.registerLanguage("reasonml",function(r){var e="~?[a-z$_][0-9a-zA-Z$_]*",a="`?[A-Z$_][0-9a-zA-Z$_]*",c="("+["||","&&","++","**","+.","*","/","*.","/.","...","|>"].map(function(r){return r.split("").map(function(r){return"\\"+r}).join("")}).join("|")+"|==|===)",n="\\s+"+c+"\\s+",t={keyword:"and as asr assert begin class constraint do done downto else end exception externalfor fun function functor if in include inherit initializerland lazy let lor lsl lsr lxor match method mod module mutable new nonrecobject of open or private rec sig struct then to try type val virtual when while with",built_in:"array bool bytes char exn|5 float int int32 int64 list lazy_t|5 nativeint|5 ref string unit ",literal:"true false"},i="\\b(0[xX][a-fA-F0-9_]+[Lln]?|0[oO][0-7_]+[Lln]?|0[bB][01_]+[Lln]?|[0-9][0-9_]*([Lln]|(\\.[0-9_]*)?([eE][-+]?[0-9_]+)?)?)",s={cN:"number",r:0,v:[{b:i},{b:"\\(\\-"+i+"\\)"}]},b={cN:"operator",r:0,b:c},o=[{cN:"identifier",r:0,b:e},b,s],l=[r.QSM,b,{cN:"module",b:"\\b"+a,rB:!0,e:".",c:[{cN:"identifier",b:a,r:0}]}],u=[{cN:"module",b:"\\b"+a,rB:!0,e:".",r:0,c:[{cN:"identifier",b:a,r:0}]}],_={cN:"function",r:0,k:t,v:[{b:"\\s(\\(\\.?.*?\\)|"+e+")\\s*=>",e:"\\s*=>",rB:!0,r:0,c:[{cN:"params",v:[{b:e},{b:"~?[a-z$_][0-9a-zA-Z$_]*(s*:s*[a-z$_][0-9a-z$_]*((s*('?[a-z$_][0-9a-z$_]*s*(,'?[a-z$_][0-9a-z$_]*)*)?s*))?)?(s*:s*[a-z$_][0-9a-z$_]*((s*('?[a-z$_][0-9a-z$_]*s*(,'?[a-z$_][0-9a-z$_]*)*)?s*))?)?"},{b:/\(\s*\)/}]}]},{b:"\\s\\(\\.?[^;\\|]*\\)\\s*=>",e:"\\s=>",rB:!0,r:0,c:[{cN:"params",r:0,v:[{b:e,e:"(,|\\n|\\))",r:0,c:[b,{cN:"typing",b:":",e:"(,|\\n)",rB:!0,r:0,c:u}]}]}]},{b:"\\(\\.\\s"+e+"\\)\\s*=>"}]};l.push(_);var N={cN:"constructor",b:a+"\\(",e:"\\)",i:"\\n",k:t,c:[r.QSM,b,{cN:"params",b:"\\b"+e}]},d={cN:"pattern-match",b:"\\|",rB:!0,k:t,e:"=>",r:0,c:[N,b,{r:0,cN:"constructor",b:a}]},z={cN:"module-access",k:t,rB:!0,v:[{b:"\\b("+a+"\\.)+"+e},{b:"\\b("+a+"\\.)+\\(",e:"\\)",rB:!0,c:[_,{b:"\\(",e:"\\)",skip:!0}].concat(l)},{b:"\\b("+a+"\\.)+{",e:"}"}],c:l};return u.push(z),{aliases:["re"],k:t,i:"(:\\-|:=|\\${|\\+=)",c:[r.C("/\\*","\\*/",{i:"^(\\#,\\/\\/)"}),{cN:"character",b:"'(\\\\[^']+|[^'])'",i:"\\n",r:0},r.QSM,{cN:"literal",b:"\\(\\)",r:0},{cN:"literal",b:"\\[\\|",e:"\\|\\]",r:0,c:o},{cN:"literal",b:"\\[",e:"\\]",r:0,c:o},N,{cN:"operator",b:n,i:"\\-\\->",r:0},s,r.CLCM,d,_,{cN:"module-def",b:"\\bmodule\\s+"+e+"\\s+"+a+"\\s+=\\s+{",e:"}",rB:!0,k:t,r:0,c:[{cN:"module",r:0,b:a},{b:"{",e:"}",skip:!0}].concat(l)},z]}});
\ No newline at end of file
diff --git a/3.2/index.html b/3.2/index.html
new file mode 100644
index 00000000..c0e93dbc
--- /dev/null
+++ b/3.2/index.html
@@ -0,0 +1,21 @@
+
+
+
+ index
+
+
+
+
+
+
+