get a n returns the element number n of array a.
+The first element has number 0.
+The last element has number length a - 1.
+You can also write a.(n) instead of get a n.
Raise Invalid_argument "index out of bounds"
+if n is outside the range 0 to (length a - 1).
blit a1 o1 a2 o2 len copies len elements
+from array a1, starting at element number o1, to array a2,
+starting at element number o2. It works correctly even if
+a1 and a2 are the same array, and the source and
+destination chunks overlap.
Raise Invalid_argument "CCArray.blit" if o1 and len do not
+designate a valid subarray of a1, or if o2 and len do not
+designate a valid subarray of a2.
sorted cmp a makes a copy of a and sorts it with cmp.
Since: 1.0
val sort_indices : ('a‑>'a‑> int) ‑>'at‑> int array
sort_indices cmp 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 cmp a
+appears in a. a is not modified.
In other words, map (fun i -> a.(i)) (sort_indices cmp a) = sorted cmp a.
+sort_indices yields the inverse permutation of sort_ranking.
Since: 1.0
val sort_ranking : ('a‑>'a‑> int) ‑>'at‑> int array
sort_ranking cmp 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 cmp a. a is not modified.
In other words, map (fun i -> (sorted cmp a).(i)) (sort_ranking cmp 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 x a lookups the index of some key x in a sorted array a.
+Undefined behavior if the array a is not sorted wrt cmp.
+Complexity: O(log (n)) (dichotomic search).
ReturnsNone if the key x 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 x a finds the index of the object x 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) x = 0 (for some i).
`All_lower if all elements of a are lower than x.
`All_bigger if all elements of a are bigger than x.
`Just_after i if a.(i) < x < a.(i+1).
`Empty if the array a is empty.
RaisesInvalid_argument: if the array is found to be unsorted w.r.t cmp.
for_all2 p [|a1; ...; an|] [|b1; ...; bn|] is true if each pair of elements ai bi
+satisfies the predicate p.
+That is, it returns (p a1 b1) && (p a2 b2) && ... && (p an bn).
RaisesInvalid_argument: if arrays have distinct lengths.
+Allow different types.
exists p [|a1; ...; an|] is true if at least one element of
+the array satisfies the predicate p. That is, it returns
+(p a1) || (p a2) || ... || (p an).
exists2 p [|a1; ...; an|] [|b1; ...; bn|] is true if any pair of elements ai bi
+satisfies the predicate p.
+That is, it returns (p a1 b1) || (p a2 b2) || ... || (p an bn).
RaisesInvalid_argument: if arrays have distinct lengths.
+Allow different types.
Since: 0.20
val fold2 : ('acc‑>'a‑>'b‑>'acc) ‑>'acc‑>'at‑>'bt‑>'acc
fold2 f acc a b fold on two arrays a and b stepwise.
+It computes f (... (f acc a1 b1)...) an bn.
RaisesInvalid_argument: if arrays have distinct lengths.
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_seq a returns a sequence 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.
pp_i ~sep pp_item ppf a prints the array a on ppf.
+The printing function pp_item is giving both index and element.
+Elements are separated by sep (defaults to ", ").
map f a applies function f to all elements of a,
+and builds an array with the results returned by f:
+[| f a.(0); f a.(1); ...; f a.(length a - 1) |].
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)|].
RaisesInvalid_argument: if a and b have distinct lengths.
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 sort_generic : (module MONO_ARRAYwithtype elt='elt and type t='arr) ‑> cmp:('elt‑>'elt‑> int) ‑>'arr‑> unit
sort_generic (module M) cmp a sorts the array a, without allocating (eats stack space though).
+Performance might be lower than Array.sort.
Since: 0.14
\ No newline at end of file
diff --git a/2.3/containers/CCArray/module-type-MONO_ARRAY/index.html b/2.3/containers/CCArray/module-type-MONO_ARRAY/index.html
new file mode 100644
index 00000000..81b820cf
--- /dev/null
+++ b/2.3/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/2.3/containers/CCArrayLabels/.jbuilder-keep b/2.3/containers/CCArrayLabels/.jbuilder-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.3/containers/CCArrayLabels/Floatarray/index.html b/2.3/containers/CCArrayLabels/Floatarray/index.html
new file mode 100644
index 00000000..5f3d59f9
--- /dev/null
+++ b/2.3/containers/CCArrayLabels/Floatarray/index.html
@@ -0,0 +1,2 @@
+
+Floatarray (containers.CCArrayLabels.Floatarray)
ModuleCCArrayLabels.Floatarray
external create : int ‑> floatarray = "caml_floatarray_create"
external length : floatarray ‑> int = "%floatarray_length"
external get : floatarray ‑> int ‑> float = "%floatarray_safe_get"
external set : floatarray ‑> int ‑> float ‑> unit = "%floatarray_safe_set"
external unsafe_get : floatarray ‑> int ‑> float = "%floatarray_unsafe_get"
external unsafe_set : floatarray ‑> int ‑> float ‑> unit = "%floatarray_unsafe_set"
\ No newline at end of file
diff --git a/2.3/containers/CCArrayLabels/index.html b/2.3/containers/CCArrayLabels/index.html
new file mode 100644
index 00000000..beef01df
--- /dev/null
+++ b/2.3/containers/CCArrayLabels/index.html
@@ -0,0 +1,67 @@
+
+CCArrayLabels (containers.CCArrayLabels)
ModuleCCArrayLabels
Array utils
type 'a sequence = ('a‑> unit) ‑> unit
type 'a klist = unit ‑> [ `Nil | `Cons of 'a * 'aklist ]
type 'a gen = unit ‑>'a option
type 'a equal = 'a‑>'a‑> bool
type 'a ord = 'a‑>'a‑> int
type 'a random_gen = Random.State.t ‑>'a
type 'a printer = Format.formatter ‑>'a‑> unit
Arrays
include module type of ArrayLabels
external length : 'a array ‑> int = "%array_length"
external get : 'a array ‑> int ‑>'a = "%array_safe_get"
external set : 'a array ‑> int ‑>'a‑> unit = "%array_safe_set"
external make : int ‑>'a‑>'a array = "caml_make_vect"
external create : int ‑>'a‑>'a array = "caml_make_vect"
Deprecated Use Array.make instead.
val init : int ‑> f:(int ‑>'a) ‑>'a array
val make_matrix : dimx:int ‑> dimy:int ‑>'a‑>'a array array
val create_matrix : dimx:int ‑> dimy:int ‑>'a‑>'a array array
Deprecated Use Array.make_matrix instead.
val append : 'a array ‑>'a array ‑>'a array
val concat : 'a array list ‑>'a array
val sub : 'a array ‑> pos:int ‑> len:int ‑>'a array
val copy : 'a array ‑>'a array
val fill : 'a array ‑> pos:int ‑> len:int ‑>'a‑> unit
val blit : src:'a array ‑> src_pos:int ‑> dst:'a array ‑> dst_pos:int ‑> len:int ‑> unit
val to_list : 'a array ‑>'a list
val of_list : 'a list ‑>'a array
val iter : f:('a‑> unit) ‑>'a array ‑> unit
val map : f:('a‑>'b) ‑>'a array ‑>'b array
val iteri : f:(int ‑>'a‑> unit) ‑>'a array ‑> unit
val mapi : f:(int ‑>'a‑>'b) ‑>'a array ‑>'b array
val fold_left : f:('a‑>'b‑>'a) ‑> init:'a‑>'b array ‑>'a
val fold_right : f:('b‑>'a‑>'a) ‑>'b array ‑> init:'a‑>'a
val iter2 : f:('a‑>'b‑> unit) ‑>'a array ‑>'b array ‑> unit
val map2 : f:('a‑>'b‑>'c) ‑>'a array ‑>'b array ‑>'c array
val exists : f:('a‑> bool) ‑>'a array ‑> bool
val for_all : f:('a‑> bool) ‑>'a array ‑> bool
val mem : 'a‑> set:'a array ‑> bool
val memq : 'a‑> set:'a array ‑> bool
external create_float : int ‑> float array = "caml_make_float_vect"
val make_float : int ‑> float array
Deprecated Use Array.create_float instead.
val sort : cmp:('a‑>'a‑> int) ‑>'a array ‑> unit
val stable_sort : cmp:('a‑>'a‑> int) ‑>'a array ‑> unit
val fast_sort : cmp:('a‑>'a‑> int) ‑>'a array ‑> unit
external unsafe_get : 'a array ‑> int ‑>'a = "%array_unsafe_get"
external unsafe_set : 'a array ‑> int ‑>'a‑> unit = "%array_unsafe_set"
get a n returns the element number n of array a.
+The first element has number 0.
+The last element has number length a - 1.
+You can also write a.(n) instead of get a n.
Raise Invalid_argument "index out of bounds"
+if n is outside the range 0 to (length a - 1).
blit a1 o1 a2 o2 len copies len elements
+from array a1, starting at element number o1, to array a2,
+starting at element number o2. It works correctly even if
+a1 and a2 are the same array, and the source and
+destination chunks overlap.
Raise Invalid_argument "CCArray.blit" if o1 and len do not
+designate a valid subarray of a1, or if o2 and len do not
+designate a valid subarray of a2.
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).
ReturnsNone 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.
`Just_after i if a.(i) < key < a.(i+1).
`Empty if the array a is empty.
RaisesInvalid_argument: if the array is found to be unsorted w.r.t cmp.
for_all ~f [|a1; ...; an|] is true if all elements of the array
+satisfy the predicate ~f. That is, it returns
+(~f a1) && (~f a2) && ... && (~f an).
val for_all2 : f:('a‑>'b‑> bool) ‑>'at‑>'bt‑> bool
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).
RaisesInvalid_argument: if arrays have distinct lengths.
+Allow different types.
exists ~f [|a1; ...; an|] is true if at least one element of
+the array satisfies the predicate ~f. That is, it returns
+(~f a1) || (~f a2) || ... || (~f an).
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).
RaisesInvalid_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.
RaisesInvalid_argument: if a and b have distinct lengths.
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_seq a returns a sequence 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.
pp_i ~sep pp_item ppf a prints the array a on ppf.
+The printing function pp_item is giving both index and element.
+Elements are separated by sep (defaults to ", ").
map ~f a applies function f to all elements of a,
+and builds an array with the results returned by ~f:
+[| ~f a.(0); ~f a.(1); ...; ~f a.(length a - 1) |].
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)|].
RaisesInvalid_argument: if a and b have distinct lengths.
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 sort_generic : (module MONO_ARRAYwithtype elt='elt and type t='arr) ‑> cmp:('elt‑>'elt‑> int) ‑>'arr‑> unit
sort_generic (module M) ~cmp a sorts the array a, without allocating (eats stack space though).
+Performance might be lower than Array.sort.
Since: 0.14
\ No newline at end of file
diff --git a/2.3/containers/CCArrayLabels/module-type-MONO_ARRAY/index.html b/2.3/containers/CCArrayLabels/module-type-MONO_ARRAY/index.html
new file mode 100644
index 00000000..132c122c
--- /dev/null
+++ b/2.3/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/2.3/containers/CCArray_slice/.jbuilder-keep b/2.3/containers/CCArray_slice/.jbuilder-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.3/containers/CCArray_slice/index.html b/2.3/containers/CCArray_slice/index.html
new file mode 100644
index 00000000..57c245d2
--- /dev/null
+++ b/2.3/containers/CCArray_slice/index.html
@@ -0,0 +1,59 @@
+
+CCArray_slice (containers.CCArray_slice)
ModuleCCArray_slice
Array Slice
type 'a sequence = ('a‑> unit) ‑> unit
type 'a klist = unit ‑> [ `Nil | `Cons of 'a * 'aklist ]
type 'a gen = unit ‑>'a option
type 'a equal = 'a‑>'a‑> bool
type 'a ord = 'a‑>'a‑> int
type 'a random_gen = Random.State.t ‑>'a
type 'a printer = Format.formatter ‑>'a‑> unit
type 'a t
The type for an array slice, containing elements of type 'a
get as n returns the element number n of slice as.
+The first element has number 0.
+The last element has number length as - 1.
+You can also write as.(n) instead of get as n.
Raise Invalid_argument "index out of bounds"
+if n is outside the range 0 to (length as - 1).
blit as1 o1 as2 o2 len copies len elements
+from slice as1, starting at element number o1, to slice as2,
+starting at element number o2. It works correctly even if
+as1 and as2 are the same slice, and the source and
+destination chunks overlap.
Raise Invalid_argument "CCArray_slice.blit" if o1 and len do not
+designate a valid subarray of as1, or if o2 and len do not
+designate a valid subarray of as2.
sorted cmp as makes a copy of as and sorts it with cmp.
Since: 1.0
val sort_indices : ('a‑>'a‑> int) ‑>'at‑> int array
sort_indices cmp as returns a new array b, with the same length as as,
+such that b.(i) is the index at which the i-th element of sorted cmp as
+appears in as. as is not modified.
In other words, map (fun i -> as.(i)) (sort_indices cmp as) = sorted cmp as.
+sort_indices yields the inverse permutation of sort_ranking.
Since: 1.0
val sort_ranking : ('a‑>'a‑> int) ‑>'at‑> int array
sort_ranking cmp as returns a new array b, with the same length as as,
+such that b.(i) is the index at which the i-th element of as appears
+in sorted cmp as. as is not modified.
In other words, map (fun i -> (sorted cmp as).(i)) (sort_ranking cmp as) = as.
+sort_ranking yields the inverse permutation of sort_indices.
In the absence of duplicate elements in as, we also have
+lookup_exn as.(i) (sorted as) = (sorted_ranking as).(i).
val bsearch : cmp:('a‑>'a‑> int) ‑>'a‑>'at‑> [ `All_lower | `All_bigger | `Just_after of int | `Empty | `At of int ]
bsearch ~cmp x as finds the index of the object x in the slice as,
+provided as is sorted using cmp. If the slice is not sorted,
+the result is not specified (may raise Invalid_argument).
Complexity: O(log n) where n is the length of the slice as
+(dichotomic search).
Returns
`At i if cmp as.(i) x = 0 (for some i).
`All_lower if all elements of as are lower than x.
`All_bigger if all elements of as are bigger than x.
`Just_after i if as.(i) < x < as.(i+1).
`Empty if the slice as is empty.
RaisesInvalid_argument: if the slice is found to be unsorted w.r.t cmp.
for_all2 p [|as1; ...; asn|] [|bs1; ...; bsn|] is true if each pair of elements asi bsi
+satisfies the predicate p.
+That is, it returns (p as1 bs1) && (p as2 bs2) && ... && (p asn bsn).
RaisesInvalid_argument: if slices have distinct lengths.
+Allow different types.
exists p [|as1; ...; asn|] is true if at least one element of
+the slice satisfies the predicate p. That is, it returns
+(p as1) || (p as2) || ... || (p asn).
exists2 p [|as1; ...; asn|] [|bs1; ...; bsn|] is true if any pair of elements asi bsi
+satisfies the predicate p.
+That is, it returns (p as1 bs1) || (p as2 bs2) || ... || (p asn bsn).
RaisesInvalid_argument: if slices have distinct lengths.
+Allow different types.
Since: 0.20
val fold2 : ('acc‑>'a‑>'b‑>'acc) ‑>'acc‑>'at‑>'bt‑>'acc
fold2 f acc as bs fold on two slices as and bs stepwise.
+It computes f (... (f acc as1 bs1)...) asn bsn.
RaisesInvalid_argument: if slices have distinct lengths.
shuffle_with rs as randomly shuffles the slice as (like shuffle) but a specialized random
+state rs is used to control the random numbers being produced during shuffling (for reproducibility).
to_seq as returns a sequence of the elements of a slice as.
+The input slice as is shared with the sequence and modification of it will result
+in modification of the sequence.
pp_i ~sep pp_item ppf as prints the slice as on ppf.
+The printing function pp_item is giving both index and element.
+Elements are separated by sep (defaults to ", ").
\ No newline at end of file
diff --git a/2.3/containers/CCBV/.jbuilder-keep b/2.3/containers/CCBV/.jbuilder-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.3/containers/CCBV/index.html b/2.3/containers/CCBV/index.html
new file mode 100644
index 00000000..53db330d
--- /dev/null
+++ b/2.3/containers/CCBV/index.html
@@ -0,0 +1,18 @@
+
+CCBV (containers.CCBV)
ModuleCCBV
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/2.3/containers/CCBijection/.jbuilder-keep b/2.3/containers/CCBijection/.jbuilder-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.3/containers/CCBijection/Make/argument-1-L/index.html b/2.3/containers/CCBijection/Make/argument-1-L/index.html
new file mode 100644
index 00000000..ff6a760f
--- /dev/null
+++ b/2.3/containers/CCBijection/Make/argument-1-L/index.html
@@ -0,0 +1,2 @@
+
+1-L (containers.CCBijection.Make.1-L)
\ No newline at end of file
diff --git a/2.3/containers/CCBijection/Make/argument-2-R/index.html b/2.3/containers/CCBijection/Make/argument-2-R/index.html
new file mode 100644
index 00000000..ac460337
--- /dev/null
+++ b/2.3/containers/CCBijection/Make/argument-2-R/index.html
@@ -0,0 +1,2 @@
+
+2-R (containers.CCBijection.Make.2-R)
\ No newline at end of file
diff --git a/2.3/containers/CCBijection/Make/index.html b/2.3/containers/CCBijection/Make/index.html
new file mode 100644
index 00000000..3d052b83
--- /dev/null
+++ b/2.3/containers/CCBijection/Make/index.html
@@ -0,0 +1,7 @@
+
+Make (containers.CCBijection.Make)
\ No newline at end of file
diff --git a/2.3/containers/CCBijection/index.html b/2.3/containers/CCBijection/index.html
new file mode 100644
index 00000000..8bcbc483
--- /dev/null
+++ b/2.3/containers/CCBijection/index.html
@@ -0,0 +1,4 @@
+
+CCBijection (containers.CCBijection)
ModuleCCBijection
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/2.3/containers/CCBijection/module-type-OrderedType/index.html b/2.3/containers/CCBijection/module-type-OrderedType/index.html
new file mode 100644
index 00000000..c54fe187
--- /dev/null
+++ b/2.3/containers/CCBijection/module-type-OrderedType/index.html
@@ -0,0 +1,2 @@
+
+OrderedType (containers.CCBijection.OrderedType)
\ No newline at end of file
diff --git a/2.3/containers/CCBijection/module-type-S/index.html b/2.3/containers/CCBijection/module-type-S/index.html
new file mode 100644
index 00000000..972ef52c
--- /dev/null
+++ b/2.3/containers/CCBijection/module-type-S/index.html
@@ -0,0 +1,7 @@
+
+S (containers.CCBijection.S)
\ No newline at end of file
diff --git a/2.3/containers/CCBitField/.jbuilder-keep b/2.3/containers/CCBitField/.jbuilder-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.3/containers/CCBitField/Make/argument-1-X/index.html b/2.3/containers/CCBitField/Make/argument-1-X/index.html
new file mode 100644
index 00000000..05089fc6
--- /dev/null
+++ b/2.3/containers/CCBitField/Make/argument-1-X/index.html
@@ -0,0 +1,2 @@
+
+1-X (containers.CCBitField.Make.1-X)
ParameterCCBitField.Make.1-X
\ No newline at end of file
diff --git a/2.3/containers/CCBitField/Make/index.html b/2.3/containers/CCBitField/Make/index.html
new file mode 100644
index 00000000..dc901307
--- /dev/null
+++ b/2.3/containers/CCBitField/Make/index.html
@@ -0,0 +1,4 @@
+
+Make (containers.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/2.3/containers/CCBitField/index.html b/2.3/containers/CCBitField/index.html
new file mode 100644
index 00000000..4c79178b
--- /dev/null
+++ b/2.3/containers/CCBitField/index.html
@@ -0,0 +1,15 @@
+
+CCBitField (containers.CCBitField)
ModuleCCBitField
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);;
+
exception TooManyFields
Raised when too many fields are packed into one bitfield.
exception Frozen
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/2.3/containers/CCBitField/module-type-S/index.html b/2.3/containers/CCBitField/module-type-S/index.html
new file mode 100644
index 00000000..369b4291
--- /dev/null
+++ b/2.3/containers/CCBitField/module-type-S/index.html
@@ -0,0 +1,4 @@
+
+S (containers.CCBitField.S)
Module typeCCBitField.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/2.3/containers/CCBlockingQueue/.jbuilder-keep b/2.3/containers/CCBlockingQueue/.jbuilder-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.3/containers/CCBlockingQueue/index.html b/2.3/containers/CCBlockingQueue/index.html
new file mode 100644
index 00000000..49c997ce
--- /dev/null
+++ b/2.3/containers/CCBlockingQueue/index.html
@@ -0,0 +1,9 @@
+
+CCBlockingQueue (containers.CCBlockingQueue)
ModuleCCBlockingQueue
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/2.3/containers/CCBool/.jbuilder-keep b/2.3/containers/CCBool/.jbuilder-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.3/containers/CCBool/index.html b/2.3/containers/CCBool/index.html
new file mode 100644
index 00000000..fb335818
--- /dev/null
+++ b/2.3/containers/CCBool/index.html
@@ -0,0 +1,2 @@
+
+CCBool (containers.CCBool)
\ No newline at end of file
diff --git a/2.3/containers/CCCache/.jbuilder-keep b/2.3/containers/CCCache/.jbuilder-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.3/containers/CCCache/index.html b/2.3/containers/CCCache/index.html
new file mode 100644
index 00000000..15e1fc04
--- /dev/null
+++ b/2.3/containers/CCCache/index.html
@@ -0,0 +1,38 @@
+
+CCCache (containers.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 *)
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.
Parametercb: called after the value is generated or retrieved.
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;;
Parametercb: called after the value is generated or retrieved.
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.
Parametereq: 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/2.3/containers/CCChar/.jbuilder-keep b/2.3/containers/CCChar/.jbuilder-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.3/containers/CCChar/index.html b/2.3/containers/CCChar/index.html
new file mode 100644
index 00000000..34ab697a
--- /dev/null
+++ b/2.3/containers/CCChar/index.html
@@ -0,0 +1,9 @@
+
+CCChar (containers.CCChar)
The comparison function for characters, with the same specification as
+Pervasives.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/2.3/containers/CCDeque/.jbuilder-keep b/2.3/containers/CCDeque/.jbuilder-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.3/containers/CCDeque/index.html b/2.3/containers/CCDeque/index.html
new file mode 100644
index 00000000..004f4d85
--- /dev/null
+++ b/2.3/containers/CCDeque/index.html
@@ -0,0 +1,13 @@
+
+CCDeque (containers.CCDeque)
ModuleCCDeque
Imperative deque
This structure provides fast access to its front and back elements,
+with O(1) operations.
\ No newline at end of file
diff --git a/2.3/containers/CCEqual/.jbuilder-keep b/2.3/containers/CCEqual/.jbuilder-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.3/containers/CCEqual/Infix/index.html b/2.3/containers/CCEqual/Infix/index.html
new file mode 100644
index 00000000..a69ba8ed
--- /dev/null
+++ b/2.3/containers/CCEqual/Infix/index.html
@@ -0,0 +1,2 @@
+
+Infix (containers.CCEqual.Infix)
\ No newline at end of file
diff --git a/2.3/containers/CCEqual/index.html b/2.3/containers/CCEqual/index.html
new file mode 100644
index 00000000..916a3d3d
--- /dev/null
+++ b/2.3/containers/CCEqual/index.html
@@ -0,0 +1,7 @@
+
+CCEqual (containers.CCEqual)
ModuleCCEqual
Equality Combinators
Since: 1.2
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/2.3/containers/CCFQueue/.jbuilder-keep b/2.3/containers/CCFQueue/.jbuilder-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.3/containers/CCFQueue/index.html b/2.3/containers/CCFQueue/index.html
new file mode 100644
index 00000000..1a2a5590
--- /dev/null
+++ b/2.3/containers/CCFQueue/index.html
@@ -0,0 +1,8 @@
+
+CCFQueue (containers.CCFQueue)
ModuleCCFQueue
Functional queues
type 'a sequence = ('a‑> unit) ‑> unit
type 'a klist = unit ‑> [ `Nil | `Cons of 'a * 'aklist ]
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].
RaisesInvalid_argument: if n<0.
val take_back_while : ('a‑> bool) ‑>'at‑>'at * 'a list
\ No newline at end of file
diff --git a/2.3/containers/CCFloat/.jbuilder-keep b/2.3/containers/CCFloat/.jbuilder-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.3/containers/CCFloat/Infix/index.html b/2.3/containers/CCFloat/Infix/index.html
new file mode 100644
index 00000000..6d8c0861
--- /dev/null
+++ b/2.3/containers/CCFloat/Infix/index.html
@@ -0,0 +1,2 @@
+
+Infix (containers.CCFloat.Infix)
\ No newline at end of file
diff --git a/2.3/containers/CCFloat/index.html b/2.3/containers/CCFloat/index.html
new file mode 100644
index 00000000..8b74ab5b
--- /dev/null
+++ b/2.3/containers/CCFloat/index.html
@@ -0,0 +1,8 @@
+
+CCFloat (containers.CCFloat)
\ No newline at end of file
diff --git a/2.3/containers/CCFormat/.jbuilder-keep b/2.3/containers/CCFormat/.jbuilder-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.3/containers/CCFormat/Dump/index.html b/2.3/containers/CCFormat/Dump/index.html
new file mode 100644
index 00000000..b488489f
--- /dev/null
+++ b/2.3/containers/CCFormat/Dump/index.html
@@ -0,0 +1,2 @@
+
+Dump (containers.CCFormat.Dump)
\ No newline at end of file
diff --git a/2.3/containers/CCFormat/index.html b/2.3/containers/CCFormat/index.html
new file mode 100644
index 00000000..d6eae4cd
--- /dev/null
+++ b/2.3/containers/CCFormat/index.html
@@ -0,0 +1,44 @@
+
+CCFormat (containers.CCFormat)
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 : Pervasives.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/2.3/containers/CCFun/.jbuilder-keep b/2.3/containers/CCFun/.jbuilder-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.3/containers/CCFun/Monad/argument-1-X/index.html b/2.3/containers/CCFun/Monad/argument-1-X/index.html
new file mode 100644
index 00000000..2aecaebc
--- /dev/null
+++ b/2.3/containers/CCFun/Monad/argument-1-X/index.html
@@ -0,0 +1,2 @@
+
+1-X (containers.CCFun.Monad.1-X)
ParameterCCFun.Monad.1-X
type t
\ No newline at end of file
diff --git a/2.3/containers/CCFun/Monad/index.html b/2.3/containers/CCFun/Monad/index.html
new file mode 100644
index 00000000..67350d69
--- /dev/null
+++ b/2.3/containers/CCFun/Monad/index.html
@@ -0,0 +1,2 @@
+
+Monad (containers.CCFun.Monad)
\ No newline at end of file
diff --git a/2.3/containers/CCFun/index.html b/2.3/containers/CCFun/index.html
new file mode 100644
index 00000000..744a839b
--- /dev/null
+++ b/2.3/containers/CCFun/index.html
@@ -0,0 +1,18 @@
+
+CCFun (containers.CCFun)
ModuleCCFun
Basic Functions
val (|>) : 'a‑> ('a‑>'b) ‑>'b
A 'pipe' operator. x |> f is the same as f x.
val compose : ('a‑>'b) ‑> ('b‑>'c) ‑>'a‑>'c
Composition. compose f g x is g (f x).
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 (%>) : ('a‑>'b) ‑> ('b‑>'c) ‑>'a‑>'c
Alias to compose.
val (@@) : ('a‑>'b) ‑>'a‑>'b
f @@ x is the same as f x, but right-associative.
Since: 0.5
val id : 'a‑>'a
Identity function.
val const : 'a‑>'b‑>'a
Produce a function that just returns its first argument.
+const x y = x for any y.
val flip : ('a‑>'b‑>'c) ‑>'b‑>'a‑>'c
Reverse the order of arguments for a binary function.
val curry : (('a * 'b) ‑>'c) ‑>'a‑>'b‑>'c
Convert a function which accepts a pair of arguments into a function which accepts two arguments.
+curry f x y is f (x,y).
val uncurry : ('a‑>'b‑>'c) ‑> ('a * 'b) ‑>'c
Convert a function which accepts a two arguments into a function which accepts a pair of arguments.
+uncurry f (x,y) is f x y.
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 Pervasives.compare
val (%) : ('b‑>'c) ‑> ('a‑>'b) ‑>'a‑>'c
Mathematical composition. (%) f g x is f (g x).
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.
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.
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.
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.
Since: 2.1
Monad
Functions with a fixed domain are monads in their codomain.
module Monad : functor (X : sig ... end) -> sig ... end
\ No newline at end of file
diff --git a/2.3/containers/CCFun_vec/.jbuilder-keep b/2.3/containers/CCFun_vec/.jbuilder-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.3/containers/CCFun_vec/index.html b/2.3/containers/CCFun_vec/index.html
new file mode 100644
index 00000000..3e6c6fbf
--- /dev/null
+++ b/2.3/containers/CCFun_vec/index.html
@@ -0,0 +1,3 @@
+
+CCFun_vec (containers.CCFun_vec)
ModuleCCFun_vec
Functional Vectors
Tree with a large branching factor for logarithmic operations with
+a low multiplicative factor.
status: experimental. DO NOT USE (yet)
Since: 2.1
type 'a sequence = ('a‑> unit) ‑> unit
type 'a gen = unit ‑>'a option
type 'a printer = Format.formatter ‑>'a‑> unit
type 'a ktree = unit ‑> [ `Nil | `Node of 'a * 'aktree list ]
\ No newline at end of file
diff --git a/2.3/containers/CCGraph/.jbuilder-keep b/2.3/containers/CCGraph/.jbuilder-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.3/containers/CCGraph/Dot/index.html b/2.3/containers/CCGraph/Dot/index.html
new file mode 100644
index 00000000..af5f3b7f
--- /dev/null
+++ b/2.3/containers/CCGraph/Dot/index.html
@@ -0,0 +1,2 @@
+
+Dot (containers.CCGraph.Dot)
val with_out : string ‑> (Format.formatter ‑>'a) ‑>'a
Shortcut to open a file and write to it.
\ No newline at end of file
diff --git a/2.3/containers/CCGraph/Lazy_tree/index.html b/2.3/containers/CCGraph/Lazy_tree/index.html
new file mode 100644
index 00000000..10768f5e
--- /dev/null
+++ b/2.3/containers/CCGraph/Lazy_tree/index.html
@@ -0,0 +1,2 @@
+
+Lazy_tree (containers.CCGraph.Lazy_tree)
val fold_v : ('acc‑>'v‑>'acc) ‑>'acc‑> ('v, _) t‑>'acc
\ No newline at end of file
diff --git a/2.3/containers/CCGraph/Map/index.html b/2.3/containers/CCGraph/Map/index.html
new file mode 100644
index 00000000..0919ac63
--- /dev/null
+++ b/2.3/containers/CCGraph/Map/index.html
@@ -0,0 +1,4 @@
+
+Map (containers.CCGraph.Map)
\ No newline at end of file
diff --git a/2.3/containers/CCGraph/Seq/index.html b/2.3/containers/CCGraph/Seq/index.html
new file mode 100644
index 00000000..89904bd5
--- /dev/null
+++ b/2.3/containers/CCGraph/Seq/index.html
@@ -0,0 +1,2 @@
+
+Seq (containers.CCGraph.Seq)
\ No newline at end of file
diff --git a/2.3/containers/CCGraph/Traverse/Event/index.html b/2.3/containers/CCGraph/Traverse/Event/index.html
new file mode 100644
index 00000000..8d30fe88
--- /dev/null
+++ b/2.3/containers/CCGraph/Traverse/Event/index.html
@@ -0,0 +1,2 @@
+
+Event (containers.CCGraph.Traverse.Event)
\ No newline at end of file
diff --git a/2.3/containers/CCGraph/Traverse/index.html b/2.3/containers/CCGraph/Traverse/index.html
new file mode 100644
index 00000000..3a12b109
--- /dev/null
+++ b/2.3/containers/CCGraph/Traverse/index.html
@@ -0,0 +1,7 @@
+
+Traverse (containers.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‑>'vsequence‑> ('v * int * ('v, 'e) path) sequence_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).
Parameterdist: distance from origin of the edge to destination,
+must be strictly positive. Default is 1 for every edge.
\ No newline at end of file
diff --git a/2.3/containers/CCGraph/index.html b/2.3/containers/CCGraph/index.html
new file mode 100644
index 00000000..b0e432d6
--- /dev/null
+++ b/2.3/containers/CCGraph/index.html
@@ -0,0 +1,36 @@
+
+CCGraph (containers.CCGraph)
ModuleCCGraph
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 a sequence of vertices as input.
+If the user only has a single vertex (e.g., for a topological sort
+from a given vertex), she can use Seq.return x to build a sequence
+of one element.
is_dag ~graph vs returns true if the subset of graph reachable
+from vs is acyclic.
Since: 0.18
Topological Sort
exception Has_cycle
val topo_sort : eq:('v‑>'v‑> bool) ‑> ?rev:bool ‑> tbl:'vset‑> graph:('v, 'e) t‑>'vsequence‑>'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.
Parametereq: equality predicate on vertices (default (=)).
Parameterrev: if true, the dependency relation is inverted (v -> v' means
+v' occurs before v).
RaisesHas_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‑>'vsequence‑>'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.
Parametertbl: table used to map nodes to some hidden state.
RaisesSequence_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/2.3/containers/CCGraph/module-type-MAP/index.html b/2.3/containers/CCGraph/module-type-MAP/index.html
new file mode 100644
index 00000000..c2a9119f
--- /dev/null
+++ b/2.3/containers/CCGraph/module-type-MAP/index.html
@@ -0,0 +1,4 @@
+
+MAP (containers.CCGraph.MAP)
\ No newline at end of file
diff --git a/2.3/containers/CCHash/.jbuilder-keep b/2.3/containers/CCHash/.jbuilder-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.3/containers/CCHash/index.html b/2.3/containers/CCHash/index.html
new file mode 100644
index 00000000..149af87c
--- /dev/null
+++ b/2.3/containers/CCHash/index.html
@@ -0,0 +1,8 @@
+
+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/2.3/containers/CCHashSet/.jbuilder-keep b/2.3/containers/CCHashSet/.jbuilder-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.3/containers/CCHashSet/Make/argument-1-E/index.html b/2.3/containers/CCHashSet/Make/argument-1-E/index.html
new file mode 100644
index 00000000..112db706
--- /dev/null
+++ b/2.3/containers/CCHashSet/Make/argument-1-E/index.html
@@ -0,0 +1,2 @@
+
+1-E (containers.CCHashSet.Make.1-E)
\ No newline at end of file
diff --git a/2.3/containers/CCHashSet/Make/index.html b/2.3/containers/CCHashSet/Make/index.html
new file mode 100644
index 00000000..db8d4e64
--- /dev/null
+++ b/2.3/containers/CCHashSet/Make/index.html
@@ -0,0 +1,3 @@
+
+Make (containers.CCHashSet.Make)
pp pp_elt returns a set printer, given a printer for
+individual elements.
\ No newline at end of file
diff --git a/2.3/containers/CCHashSet/index.html b/2.3/containers/CCHashSet/index.html
new file mode 100644
index 00000000..0a6d0524
--- /dev/null
+++ b/2.3/containers/CCHashSet/index.html
@@ -0,0 +1,2 @@
+
+CCHashSet (containers.CCHashSet)
\ No newline at end of file
diff --git a/2.3/containers/CCHashSet/module-type-ELEMENT/index.html b/2.3/containers/CCHashSet/module-type-ELEMENT/index.html
new file mode 100644
index 00000000..06a0c3c9
--- /dev/null
+++ b/2.3/containers/CCHashSet/module-type-ELEMENT/index.html
@@ -0,0 +1,2 @@
+
+ELEMENT (containers.CCHashSet.ELEMENT)
\ No newline at end of file
diff --git a/2.3/containers/CCHashSet/module-type-S/index.html b/2.3/containers/CCHashSet/module-type-S/index.html
new file mode 100644
index 00000000..7c9e826c
--- /dev/null
+++ b/2.3/containers/CCHashSet/module-type-S/index.html
@@ -0,0 +1,3 @@
+
+S (containers.CCHashSet.S)
pp pp_elt returns a set printer, given a printer for
+individual elements.
\ No newline at end of file
diff --git a/2.3/containers/CCHashTrie/.jbuilder-keep b/2.3/containers/CCHashTrie/.jbuilder-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.3/containers/CCHashTrie/Make/argument-1-K/index.html b/2.3/containers/CCHashTrie/Make/argument-1-K/index.html
new file mode 100644
index 00000000..2cc3ad5b
--- /dev/null
+++ b/2.3/containers/CCHashTrie/Make/argument-1-K/index.html
@@ -0,0 +1,2 @@
+
+1-K (containers.CCHashTrie.Make.1-K)
\ No newline at end of file
diff --git a/2.3/containers/CCHashTrie/Make/index.html b/2.3/containers/CCHashTrie/Make/index.html
new file mode 100644
index 00000000..0b7736de
--- /dev/null
+++ b/2.3/containers/CCHashTrie/Make/index.html
@@ -0,0 +1,9 @@
+
+Make (containers.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/2.3/containers/CCHashTrie/Transient/index.html b/2.3/containers/CCHashTrie/Transient/index.html
new file mode 100644
index 00000000..5736cdc9
--- /dev/null
+++ b/2.3/containers/CCHashTrie/Transient/index.html
@@ -0,0 +1,7 @@
+
+Transient (containers.CCHashTrie.Transient)
ModuleCCHashTrie.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.
exception Frozen
Raised when a frozen ID is used.
\ No newline at end of file
diff --git a/2.3/containers/CCHashTrie/index.html b/2.3/containers/CCHashTrie/index.html
new file mode 100644
index 00000000..6b2edcbe
--- /dev/null
+++ b/2.3/containers/CCHashTrie/index.html
@@ -0,0 +1,6 @@
+
+CCHashTrie (containers.CCHashTrie)
ModuleCCHashTrie
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 sequence = ('a‑> unit) ‑> unit
type 'a gen = unit ‑>'a option
type 'a printer = Format.formatter ‑>'a‑> unit
type 'a ktree = unit ‑> [ `Nil | `Node of 'a * 'aktree list ]
\ No newline at end of file
diff --git a/2.3/containers/CCHashTrie/module-type-KEY/index.html b/2.3/containers/CCHashTrie/module-type-KEY/index.html
new file mode 100644
index 00000000..ba1d4196
--- /dev/null
+++ b/2.3/containers/CCHashTrie/module-type-KEY/index.html
@@ -0,0 +1,2 @@
+
+KEY (containers.CCHashTrie.KEY)
\ No newline at end of file
diff --git a/2.3/containers/CCHashTrie/module-type-S/index.html b/2.3/containers/CCHashTrie/module-type-S/index.html
new file mode 100644
index 00000000..3c8b37d1
--- /dev/null
+++ b/2.3/containers/CCHashTrie/module-type-S/index.html
@@ -0,0 +1,9 @@
+
+S (containers.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/2.3/containers/CCHashtbl/.jbuilder-keep b/2.3/containers/CCHashtbl/.jbuilder-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.3/containers/CCHashtbl/Poly/index.html b/2.3/containers/CCHashtbl/Poly/index.html
new file mode 100644
index 00000000..eb76cb98
--- /dev/null
+++ b/2.3/containers/CCHashtbl/Poly/index.html
@@ -0,0 +1,22 @@
+
+Poly (containers.CCHashtbl.Poly)
ModuleCCHashtbl.Poly
val get : ('a, 'b) Hashtbl.t ‑>'a‑>'b option
Safe version of Hashtbl.find.
val get_or : ('a, 'b) 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).
keys_list t is the list of keys in t.
+If the key is in the Hashtable multiple times, all occurrences will be returned.
Since: 0.8
val values_list : ('a, 'b) Hashtbl.t ‑>'b list
values_list t is the list of values in t.
Since: 0.8
val map_list : ('a‑>'b‑>'c) ‑> ('a, 'b) Hashtbl.t ‑>'c list
Map on a hashtable's items, collect into a list.
val incr : ?by:int ‑> ('a, int) 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).
Parameterby: if specified, the int value is incremented by by rather than 1.
Since: 0.16
val decr : ?by:int ‑> ('a, int) Hashtbl.t ‑>'a‑> unit
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.
val add_list : ('a, 'b list) 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_seq : ('a, 'b) Hashtbl.t ‑> ('a * 'b) sequence‑> unit
Add the corresponding pairs to the table, using Hashtbl.add.
Since: 0.16
val of_seq : ('a * 'b) sequence‑> ('a, 'b) Hashtbl.t
From the given bindings, added in order.
val add_seq_count : ('a, int) Hashtbl.t ‑>'asequence‑> 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.
Since: 0.16
val of_seq_count : 'asequence‑> ('a, int) Hashtbl.t
Like add_seq_count, but allocates a new table and returns it.
Since: 0.16
val to_list : ('a, 'b) Hashtbl.t ‑> ('a * 'b) list
List of bindings (order unspecified).
val of_list : ('a * 'b) list ‑> ('a, 'b) Hashtbl.t
Build a table from the given list 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) 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) 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.
\ No newline at end of file
diff --git a/2.3/containers/CCHashtbl/index.html b/2.3/containers/CCHashtbl/index.html
new file mode 100644
index 00000000..80c066f5
--- /dev/null
+++ b/2.3/containers/CCHashtbl/index.html
@@ -0,0 +1,22 @@
+
+CCHashtbl (containers.CCHashtbl)
ModuleCCHashtbl
Extension to the standard Hashtbl
Since: 0.4
type 'a sequence = ('a‑> unit) ‑> unit
type 'a eq = 'a‑>'a‑> bool
type 'a hash = 'a‑> int
type 'a printer = Format.formatter ‑>'a‑> unit
Polymorphic tables
This sub-module contains the extension of the standard polymorphic Hashtbl.
keys_list t is the list of keys in t.
+If the key is in the Hashtable multiple times, all occurrences will be returned.
Since: 0.8
val values_list : ('a, 'b) Hashtbl.t ‑>'b list
values_list t is the list of values in t.
Since: 0.8
val map_list : ('a‑>'b‑>'c) ‑> ('a, 'b) Hashtbl.t ‑>'c list
Map on a hashtable's items, collect into a list.
val incr : ?by:int ‑> ('a, int) 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).
Parameterby: if specified, the int value is incremented by by rather than 1.
Since: 0.16
val decr : ?by:int ‑> ('a, int) Hashtbl.t ‑>'a‑> unit
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.
val add_list : ('a, 'b list) 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_seq : ('a, 'b) Hashtbl.t ‑> ('a * 'b) sequence‑> unit
Add the corresponding pairs to the table, using Hashtbl.add.
Since: 0.16
val of_seq : ('a * 'b) sequence‑> ('a, 'b) Hashtbl.t
From the given bindings, added in order.
val add_seq_count : ('a, int) Hashtbl.t ‑>'asequence‑> 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.
Since: 0.16
val of_seq_count : 'asequence‑> ('a, int) Hashtbl.t
Like add_seq_count, but allocates a new table and returns it.
Since: 0.16
val to_list : ('a, 'b) Hashtbl.t ‑> ('a * 'b) list
List of bindings (order unspecified).
val of_list : ('a * 'b) list ‑> ('a, 'b) Hashtbl.t
Build a table from the given list 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) 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) 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.
module Make : functor (X : Hashtbl.HashedType) -> S with type Make.key = X.t and type 'a Make.t = 'a Hashtbl.Make(X).t
\ No newline at end of file
diff --git a/2.3/containers/CCHashtbl/module-type-S/index.html b/2.3/containers/CCHashtbl/module-type-S/index.html
new file mode 100644
index 00000000..1c4a97fe
--- /dev/null
+++ b/2.3/containers/CCHashtbl/module-type-S/index.html
@@ -0,0 +1,22 @@
+
+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).
Parameterby: if specified, the int value is incremented by by rather than 1.
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_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.
Build a table from the given list 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.
Printer for tables.
+Renamed from print since 2.0.
Since: 0.13
\ No newline at end of file
diff --git a/2.3/containers/CCHeap/.jbuilder-keep b/2.3/containers/CCHeap/.jbuilder-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.3/containers/CCHeap/Make/argument-1-E/index.html b/2.3/containers/CCHeap/Make/argument-1-E/index.html
new file mode 100644
index 00000000..6173385d
--- /dev/null
+++ b/2.3/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/2.3/containers/CCHeap/Make/index.html b/2.3/containers/CCHeap/Make/index.html
new file mode 100644
index 00000000..d3a108e8
--- /dev/null
+++ b/2.3/containers/CCHeap/Make/index.html
@@ -0,0 +1,14 @@
+
+Make (containers.CCHeap.Make)
Delete one occurrence of a value if it exist in the heap.
+delete_one eq x h, use eq to find one x in h and delete it.
+If h do not contain x then it return h.
Delete all occurrences of a value in the heap.
+delete_all eq x h, use 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.
\ No newline at end of file
diff --git a/2.3/containers/CCHeap/Make_from_compare/argument-1-E/index.html b/2.3/containers/CCHeap/Make_from_compare/argument-1-E/index.html
new file mode 100644
index 00000000..0b4b83e7
--- /dev/null
+++ b/2.3/containers/CCHeap/Make_from_compare/argument-1-E/index.html
@@ -0,0 +1,5 @@
+
+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/2.3/containers/CCHeap/Make_from_compare/index.html b/2.3/containers/CCHeap/Make_from_compare/index.html
new file mode 100644
index 00000000..6c8d28d8
--- /dev/null
+++ b/2.3/containers/CCHeap/Make_from_compare/index.html
@@ -0,0 +1,17 @@
+
+Make_from_compare (containers.CCHeap.Make_from_compare)
ModuleCCHeap.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 one occurrence of a value if it exist in the heap.
+delete_one eq x h, use eq to find one x in h and delete it.
+If h do not contain x then it return h.
Delete all occurrences of a value in the heap.
+delete_all eq x h, use 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.
\ No newline at end of file
diff --git a/2.3/containers/CCHeap/index.html b/2.3/containers/CCHeap/index.html
new file mode 100644
index 00000000..ce5c1e19
--- /dev/null
+++ b/2.3/containers/CCHeap/index.html
@@ -0,0 +1,5 @@
+
+CCHeap (containers.CCHeap)
ModuleCCHeap
Leftist Heaps
following Okasaki
type 'a sequence = ('a‑> unit) ‑> unit
type 'a gen = unit ‑>'a option
type 'a klist = unit ‑> [ `Nil | `Cons of 'a * 'aklist ]
type 'a ktree = unit ‑> [ `Nil | `Node of 'a * 'aktree list ]
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/2.3/containers/CCHeap/module-type-PARTIAL_ORD/index.html b/2.3/containers/CCHeap/module-type-PARTIAL_ORD/index.html
new file mode 100644
index 00000000..b5e693f3
--- /dev/null
+++ b/2.3/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/2.3/containers/CCHeap/module-type-S/index.html b/2.3/containers/CCHeap/module-type-S/index.html
new file mode 100644
index 00000000..8ee07899
--- /dev/null
+++ b/2.3/containers/CCHeap/module-type-S/index.html
@@ -0,0 +1,14 @@
+
+S (containers.CCHeap.S)
Delete one occurrence of a value if it exist in the heap.
+delete_one eq x h, use eq to find one x in h and delete it.
+If h do not contain x then it return h.
Delete all occurrences of a value in the heap.
+delete_all eq x h, use 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.
\ No newline at end of file
diff --git a/2.3/containers/CCHeap/module-type-TOTAL_ORD/index.html b/2.3/containers/CCHeap/module-type-TOTAL_ORD/index.html
new file mode 100644
index 00000000..015ea036
--- /dev/null
+++ b/2.3/containers/CCHeap/module-type-TOTAL_ORD/index.html
@@ -0,0 +1,5 @@
+
+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/2.3/containers/CCHet/.jbuilder-keep b/2.3/containers/CCHet/.jbuilder-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.3/containers/CCHet/Key/index.html b/2.3/containers/CCHet/Key/index.html
new file mode 100644
index 00000000..3d1e7ddb
--- /dev/null
+++ b/2.3/containers/CCHet/Key/index.html
@@ -0,0 +1,2 @@
+
+Key (containers.CCHet.Key)
\ No newline at end of file
diff --git a/2.3/containers/CCHet/Map/index.html b/2.3/containers/CCHet/Map/index.html
new file mode 100644
index 00000000..acf759fd
--- /dev/null
+++ b/2.3/containers/CCHet/Map/index.html
@@ -0,0 +1,2 @@
+
+Map (containers.CCHet.Map)
\ No newline at end of file
diff --git a/2.3/containers/CCHet/Tbl/index.html b/2.3/containers/CCHet/Tbl/index.html
new file mode 100644
index 00000000..232891c0
--- /dev/null
+++ b/2.3/containers/CCHet/Tbl/index.html
@@ -0,0 +1,2 @@
+
+Tbl (containers.CCHet.Tbl)
\ No newline at end of file
diff --git a/2.3/containers/CCHet/index.html b/2.3/containers/CCHet/index.html
new file mode 100644
index 00000000..20b1cd33
--- /dev/null
+++ b/2.3/containers/CCHet/index.html
@@ -0,0 +1,3 @@
+
+CCHet (containers.CCHet)
ModuleCCHet
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/2.3/containers/CCIO/.jbuilder-keep b/2.3/containers/CCIO/.jbuilder-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.3/containers/CCIO/File/index.html b/2.3/containers/CCIO/File/index.html
new file mode 100644
index 00000000..510e259d
--- /dev/null
+++ b/2.3/containers/CCIO/File/index.html
@@ -0,0 +1,14 @@
+
+File (containers.CCIO.File)
ModuleCCIO.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.)
RaisesSys_error: in case of error (e.g. permission denied) during iteration.
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/2.3/containers/CCIO/index.html b/2.3/containers/CCIO/index.html
new file mode 100644
index 00000000..d71a58b9
--- /dev/null
+++ b/2.3/containers/CCIO/index.html
@@ -0,0 +1,23 @@
+
+CCIO (containers.CCIO)
ModuleCCIO
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);;
transfer one file into another:
# CCIO.(
+ with_in "/tmp/input"
+ (fun ic ->
+ let chunks = read_chunks ic in
+ with_out ~flags:[Open_binary] ~mode:0o644 "/tmp/output"
+ (fun oc ->
+ write_gen oc chunks
+ )
+ )
+ ) ;;
Since: 0.6
Before 0.12.was in 'containers.io', now moved into 'containers'
type 'a or_error = ('a, string) Result.result
type 'a gen = unit ‑>'a option
See Gen in the gen library.
Input
val with_in : ?mode:int ‑> ?flags:Pervasives.open_flag list ‑> string ‑> (Pervasives.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.
RaisesSys_error: in case of error (same as open_in and close_in).
Parameterflags: opening flags (default [Open_text]). Open_rdonly is used in any cases.
val read_chunks : ?size:int ‑> Pervasives.in_channel ‑> string gen
Read the channel's content into chunks of size size.
val read_line : Pervasives.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 : Pervasives.in_channel ‑> string gen
Read all lines. The generator should be traversed only once.
val read_lines_l : Pervasives.in_channel ‑> string list
Read all lines into a list.
val read_all : ?size:int ‑> Pervasives.in_channel ‑> string
Read the whole channel into a buffer, then converted into a string.
Parametersize: the internal buffer size.
Since: 0.7
val read_all_bytes : ?size:int ‑> Pervasives.in_channel ‑> Bytes.t
Read the whole channel into a mutable byte array.
Parametersize: the internal buffer size.
Since: 0.12
Output
val with_out : ?mode:int ‑> ?flags:Pervasives.open_flag list ‑> string ‑> (Pervasives.out_channel ‑>'a) ‑>'a
\ No newline at end of file
diff --git a/2.3/containers/CCImmutArray/.jbuilder-keep b/2.3/containers/CCImmutArray/.jbuilder-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.3/containers/CCImmutArray/index.html b/2.3/containers/CCImmutArray/index.html
new file mode 100644
index 00000000..59ecfaa0
--- /dev/null
+++ b/2.3/containers/CCImmutArray/index.html
@@ -0,0 +1,8 @@
+
+CCImmutArray (containers.CCImmutArray)
ModuleCCImmutArray
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.
val pp : ?start:string ‑> ?stop:string ‑> ?sep:string ‑>'aprinter‑>'atprinter
\ No newline at end of file
diff --git a/2.3/containers/CCInt/.jbuilder-keep b/2.3/containers/CCInt/.jbuilder-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.3/containers/CCInt/Infix/index.html b/2.3/containers/CCInt/Infix/index.html
new file mode 100644
index 00000000..8b3da310
--- /dev/null
+++ b/2.3/containers/CCInt/Infix/index.html
@@ -0,0 +1,2 @@
+
+Infix (containers.CCInt.Infix)
\ No newline at end of file
diff --git a/2.3/containers/CCInt/index.html b/2.3/containers/CCInt/index.html
new file mode 100644
index 00000000..2a85b486
--- /dev/null
+++ b/2.3/containers/CCInt/index.html
@@ -0,0 +1,10 @@
+
+CCInt (containers.CCInt)
pow base exponent returns base raised to the power of exponent.
+pow a b = a^b for positive integers a and b.
+Raises Invalid_argument if a = b = 0 or b < 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/2.3/containers/CCInt32/.jbuilder-keep b/2.3/containers/CCInt32/.jbuilder-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.3/containers/CCInt32/Infix/index.html b/2.3/containers/CCInt32/Infix/index.html
new file mode 100644
index 00000000..df1e809f
--- /dev/null
+++ b/2.3/containers/CCInt32/Infix/index.html
@@ -0,0 +1,2 @@
+
+Infix (containers.CCInt32.Infix)
\ No newline at end of file
diff --git a/2.3/containers/CCInt32/index.html b/2.3/containers/CCInt32/index.html
new file mode 100644
index 00000000..3d50d879
--- /dev/null
+++ b/2.3/containers/CCInt32/index.html
@@ -0,0 +1,39 @@
+
+CCInt32 (containers.CCInt32)
ModuleCCInt32
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.
Integer division. Raise Division_by_zero if the second
+argument is zero. This division rounds the real quotient of
+its arguments towards zero, as specified for Pervasives.(/).
x mod y is the integer remainder.
+If y <> zero, the result of x mod y satisfies the following property:
+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.
Convert the given 32-bit integer (type int32) to an
+integer (type int). On 32-bit platforms, the 32-bit integer
+is taken modulo 231, i.e. the high-order bit is lost
+during the conversion. On 64-bit platforms, the conversion is exact.
Alias to Int32.of_float.
+Convert the given floating-point number to a 32-bit integer,
+discarding the fractional part (truncate towards 0).
+The result of the conversion is undefined if, after truncation, the number
+is outside the range [CCInt32.min_int, CCInt32.max_int].
Alias to Int32.of_string.
+Convert the given string to a 32-bit 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*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.
\ No newline at end of file
diff --git a/2.3/containers/CCInt64/.jbuilder-keep b/2.3/containers/CCInt64/.jbuilder-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.3/containers/CCInt64/Infix/index.html b/2.3/containers/CCInt64/Infix/index.html
new file mode 100644
index 00000000..f50f1a50
--- /dev/null
+++ b/2.3/containers/CCInt64/Infix/index.html
@@ -0,0 +1,2 @@
+
+Infix (containers.CCInt64.Infix)
\ No newline at end of file
diff --git a/2.3/containers/CCInt64/index.html b/2.3/containers/CCInt64/index.html
new file mode 100644
index 00000000..6d1f62bb
--- /dev/null
+++ b/2.3/containers/CCInt64/index.html
@@ -0,0 +1,46 @@
+
+CCInt64 (containers.CCInt64)
Integer division. Raise Division_by_zero if the second
+argument is zero. This division rounds the real quotient of
+its arguments towards zero, as specified for Pervasives.(/).
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.
The comparison function for 64-bit integers, with the same specification as
+Pervasives.compare. Along with the type t, this function compare
+allows the module CCInt64 to be passed as argument to the functors
+Set.Make and Map.Make.
Convert the given 64-bit integer (type int64) to an
+integer (type int). On 64-bit platforms, the 64-bit integer
+is taken modulo 263, i.e. the high-order bit is lost
+during the conversion. On 32-bit platforms, the 64-bit integer
+is taken modulo 231, i.e. the top 33 bits are lost
+during the conversion.
Convert the given 64-bit integer (type int64) to a
+32-bit integer (type int32). The 64-bit integer
+is taken modulo 232, i.e. the top 32 bits are lost
+during the conversion.
Convert the given 64-bit integer (type int64) to a
+native integer. On 32-bit platforms, the 64-bit integer
+is taken modulo 232. On 64-bit platforms,
+the conversion is exact.
Alias to Int64.of_float.
+Convert the given floating-point number to a 64-bit integer,
+discarding the fractional part (truncate towards 0).
+The result of the conversion is undefined if, after truncation,
+the number is outside the range [CCInt64.min_int, CCInt64.max_int].
+NOTE: used to return an option, but the function never fails.
Alias to Int64.of_string.
+Convert the given string to a 64-bit 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*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.
\ No newline at end of file
diff --git a/2.3/containers/CCIntMap/.jbuilder-keep b/2.3/containers/CCIntMap/.jbuilder-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.3/containers/CCIntMap/index.html b/2.3/containers/CCIntMap/index.html
new file mode 100644
index 00000000..18c27b44
--- /dev/null
+++ b/2.3/containers/CCIntMap/index.html
@@ -0,0 +1,6 @@
+
+CCIntMap (containers.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.
Since: 2.3
Whole-collection operations
type 'a sequence = ('a‑> unit) ‑> unit
type 'a gen = unit ‑>'a option
type 'a klist = unit ‑> [ `Nil | `Cons of 'a * 'aklist ]
\ No newline at end of file
diff --git a/2.3/containers/CCKList/.jbuilder-keep b/2.3/containers/CCKList/.jbuilder-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.3/containers/CCKList/Infix/index.html b/2.3/containers/CCKList/Infix/index.html
new file mode 100644
index 00000000..3119fd8a
--- /dev/null
+++ b/2.3/containers/CCKList/Infix/index.html
@@ -0,0 +1,2 @@
+
+Infix (containers.CCKList.Infix)
\ No newline at end of file
diff --git a/2.3/containers/CCKList/Traverse/argument-1-M/index.html b/2.3/containers/CCKList/Traverse/argument-1-M/index.html
new file mode 100644
index 00000000..0d5db06e
--- /dev/null
+++ b/2.3/containers/CCKList/Traverse/argument-1-M/index.html
@@ -0,0 +1,2 @@
+
+1-M (containers.CCKList.Traverse.1-M)
\ No newline at end of file
diff --git a/2.3/containers/CCKList/Traverse/index.html b/2.3/containers/CCKList/Traverse/index.html
new file mode 100644
index 00000000..5b23ac7b
--- /dev/null
+++ b/2.3/containers/CCKList/Traverse/index.html
@@ -0,0 +1,2 @@
+
+Traverse (containers.CCKList.Traverse)
\ No newline at end of file
diff --git a/2.3/containers/CCKList/index.html b/2.3/containers/CCKList/index.html
new file mode 100644
index 00000000..9258571b
--- /dev/null
+++ b/2.3/containers/CCKList/index.html
@@ -0,0 +1,16 @@
+
+CCKList (containers.CCKList)
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.
Print the list with the given separator (default ",").
+Do not print opening/closing delimiters.
\ No newline at end of file
diff --git a/2.3/containers/CCKList/module-type-MONAD/index.html b/2.3/containers/CCKList/module-type-MONAD/index.html
new file mode 100644
index 00000000..06109184
--- /dev/null
+++ b/2.3/containers/CCKList/module-type-MONAD/index.html
@@ -0,0 +1,2 @@
+
+MONAD (containers.CCKList.MONAD)
\ No newline at end of file
diff --git a/2.3/containers/CCKTree/.jbuilder-keep b/2.3/containers/CCKTree/.jbuilder-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.3/containers/CCKTree/Dot/index.html b/2.3/containers/CCKTree/Dot/index.html
new file mode 100644
index 00000000..c9215594
--- /dev/null
+++ b/2.3/containers/CCKTree/Dot/index.html
@@ -0,0 +1,4 @@
+
+Dot (containers.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 list t list ‑> unit
to_file filename trees makes a graph out of the trees, opens the
+file filename and prints the graph into the file.
Parametername: name of the graph.
Since: 0.6.1
\ No newline at end of file
diff --git a/2.3/containers/CCKTree/class-type-pset/index.html b/2.3/containers/CCKTree/class-type-pset/index.html
new file mode 100644
index 00000000..87e90727
--- /dev/null
+++ b/2.3/containers/CCKTree/class-type-pset/index.html
@@ -0,0 +1,2 @@
+
+pset (containers.CCKTree.pset)
\ No newline at end of file
diff --git a/2.3/containers/CCKTree/index.html b/2.3/containers/CCKTree/index.html
new file mode 100644
index 00000000..53498020
--- /dev/null
+++ b/2.3/containers/CCKTree/index.html
@@ -0,0 +1,22 @@
+
+CCKTree (containers.CCKTree)
ModuleCCKTree
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 sequence = ('a‑> unit) ‑> unit
type 'a gen = unit ‑>'a option
type 'a klist = unit ‑> [ `Nil | `Cons of 'a * 'aklist ]
type 'a printer = 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/2.3/containers/CCLazy_list/.jbuilder-keep b/2.3/containers/CCLazy_list/.jbuilder-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.3/containers/CCLazy_list/Infix/index.html b/2.3/containers/CCLazy_list/Infix/index.html
new file mode 100644
index 00000000..efff6005
--- /dev/null
+++ b/2.3/containers/CCLazy_list/Infix/index.html
@@ -0,0 +1,2 @@
+
+Infix (containers.CCLazy_list.Infix)
\ No newline at end of file
diff --git a/2.3/containers/CCLazy_list/index.html b/2.3/containers/CCLazy_list/index.html
new file mode 100644
index 00000000..0bfecea8
--- /dev/null
+++ b/2.3/containers/CCLazy_list/index.html
@@ -0,0 +1,3 @@
+
+CCLazy_list (containers.CCLazy_list)
\ No newline at end of file
diff --git a/2.3/containers/CCList/.jbuilder-keep b/2.3/containers/CCList/.jbuilder-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.3/containers/CCList/Assoc/index.html b/2.3/containers/CCList/Assoc/index.html
new file mode 100644
index 00000000..7c33af60
--- /dev/null
+++ b/2.3/containers/CCList/Assoc/index.html
@@ -0,0 +1,4 @@
+
+Assoc (containers.CCList.Assoc)
ModuleCCList.Assoc
type ('a, 'b) t = ('a * 'b) list
val get : eq:('a‑>'a‑> bool) ‑>'a‑> ('a, 'b) t‑>'b option
Find the element.
val get_exn : eq:('a‑>'a‑> bool) ‑>'a‑> ('a, 'b) t‑>'b
Like get, but unsafe.
RaisesNot_found: if the element is not present.
val set : eq:('a‑>'a‑> bool) ‑>'a‑>'b‑> ('a, 'b) t‑> ('a, 'b) t
Add the binding into the list (erase it if already present).
val mem : eq:('a‑>'a‑> bool) ‑>'a‑> ('a, _) t‑> bool
mem x l returns true iff x is a key in l.
Since: 0.16
val update : eq:('a‑>'a‑> bool) ‑> f:('b option ‑>'b option) ‑>'a‑> ('a, 'b) t‑> ('a, 'b) t
update k ~f l updates l on the key k, by calling f (get l 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 x l removes the first occurrence of k from l.
Since: 0.17
\ No newline at end of file
diff --git a/2.3/containers/CCList/Infix/index.html b/2.3/containers/CCList/Infix/index.html
new file mode 100644
index 00000000..a96c1c4e
--- /dev/null
+++ b/2.3/containers/CCList/Infix/index.html
@@ -0,0 +1,2 @@
+
+Infix (containers.CCList.Infix)
\ No newline at end of file
diff --git a/2.3/containers/CCList/Ref/index.html b/2.3/containers/CCList/Ref/index.html
new file mode 100644
index 00000000..56413548
--- /dev/null
+++ b/2.3/containers/CCList/Ref/index.html
@@ -0,0 +1,3 @@
+
+Ref (containers.CCList.Ref)
Add elements of the list at the beginning of the list ref. Elements
+at the end of the list will be at the beginning of the list ref.
\ No newline at end of file
diff --git a/2.3/containers/CCList/Traverse/argument-1-M/index.html b/2.3/containers/CCList/Traverse/argument-1-M/index.html
new file mode 100644
index 00000000..07caa0b7
--- /dev/null
+++ b/2.3/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/2.3/containers/CCList/Traverse/index.html b/2.3/containers/CCList/Traverse/index.html
new file mode 100644
index 00000000..5b32801a
--- /dev/null
+++ b/2.3/containers/CCList/Traverse/index.html
@@ -0,0 +1,4 @@
+
+Traverse (containers.CCList.Traverse)
Like map_m but map_m_par f (x::l) evaluates f x and
+f l "in parallel" before combining their result (for instance
+in Lwt).
\ No newline at end of file
diff --git a/2.3/containers/CCList/index.html b/2.3/containers/CCList/index.html
new file mode 100644
index 00000000..e702de44
--- /dev/null
+++ b/2.3/containers/CCList/index.html
@@ -0,0 +1,117 @@
+
+CCList (containers.CCList)
ModuleCCList
Complements to list
type 'a sequence = ('a‑> unit) ‑> unit
type 'a gen = unit ‑>'a option
type 'a klist = unit ‑> [ `Nil | `Cons of 'a * 'aklist ]
type 'a printer = Format.formatter ‑>'a‑> unit
type 'a random_gen = Random.State.t ‑>'a
include module type of 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 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 filter : ('a‑> bool) ‑>'a list ‑>'a list
val find_all : ('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
Safe version of List.filter.
+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 is preserved.
Like List.combine but tail-recursive.
+Transform a pair of lists into a list of pairs:
+combine [a1; ...; an] [b1; ...; bn] is
+[(a1,b1); ...; (an,bn)].
RaisesInvalid_argument: if the lists have distinct lengths.
Since: 1.2
val combine_gen : 'a list ‑>'b list ‑> ('a * 'b) gen
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.
A tail-recursive version of List.split.
+Transform a list of pairs into a pair of lists:
+split [(a1,b1); ...; (an,bn)] is ([a1; ...; an], [b1; ...; bn]).
Produce 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
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.
All pairs of distinct positions of the list. list_diagonal l will
+return 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 list t
Group 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.
join key1 key2 ~merge 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 key1 key2 ~merge 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 key2 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 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].
Parameteroffset: 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.
Parameterlast: 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.
RaisesInvalid_argument: if offset <= 0 or n <= 0.
Since: 1.0
val intersperse : 'a‑>'a list ‑>'a list
Insert the first argument between every element of the list.
Since: 2.1
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.
Set i-th element (removes the old one), or does nothing if
+index is too high.
+If the index is negative, it will set element starting from the end
+of the list.
Insert at i-th position, between the two existing elements. If the
+index is too high, append at the end of the list.
+If the index is negative, it will insert element starting from the end
+of the list.
Remove element at given index. Does nothing if the index is
+too high.
+If the index is negative, it will remove element starting from the end
+of the list.
Set Operators
Those operations maintain the invariant that the list does not
+contain duplicates (if it already satisfies it).
Remove duplicates w.r.t the equality predicate.
+Complexity is quadratic in the length of the list, but the order
+of elements is preserved. If you wish for a faster de-duplication
+but do not care about the order, use 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.
val pp : ?start:string ‑> ?stop:string ‑> ?sep:string ‑>'aprinter‑>'atprinter
Print the contents of a list.
\ No newline at end of file
diff --git a/2.3/containers/CCList/module-type-MONAD/index.html b/2.3/containers/CCList/module-type-MONAD/index.html
new file mode 100644
index 00000000..732eec61
--- /dev/null
+++ b/2.3/containers/CCList/module-type-MONAD/index.html
@@ -0,0 +1,2 @@
+
+MONAD (containers.CCList.MONAD)
\ No newline at end of file
diff --git a/2.3/containers/CCListLabels/.jbuilder-keep b/2.3/containers/CCListLabels/.jbuilder-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.3/containers/CCListLabels/Assoc/index.html b/2.3/containers/CCListLabels/Assoc/index.html
new file mode 100644
index 00000000..03850fd6
--- /dev/null
+++ b/2.3/containers/CCListLabels/Assoc/index.html
@@ -0,0 +1,4 @@
+
+Assoc (containers.CCListLabels.Assoc)
ModuleCCListLabels.Assoc
type ('a, 'b) t = ('a * 'b) list
val get : eq:('a‑>'a‑> bool) ‑>'a‑> ('a, 'b) t‑>'b option
Find the element.
val get_exn : eq:('a‑>'a‑> bool) ‑>'a‑> ('a, 'b) t‑>'b
Like get, but unsafe.
RaisesNot_found: if the element is not present.
val set : eq:('a‑>'a‑> bool) ‑>'a‑>'b‑> ('a, 'b) t‑> ('a, 'b) t
Add the binding into the list (erase it if already present).
val mem : eq:('a‑>'a‑> bool) ‑>'a‑> ('a, _) t‑> bool
mem x l returns true iff x is a key in l.
Since: 0.16
val update : eq:('a‑>'a‑> bool) ‑> f:('b option ‑>'b option) ‑>'a‑> ('a, 'b) t‑> ('a, 'b) t
update k ~f l updates l on the key k, by calling f (get l 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 x l removes the first occurrence of k from l.
Since: 0.17
\ No newline at end of file
diff --git a/2.3/containers/CCListLabels/Infix/index.html b/2.3/containers/CCListLabels/Infix/index.html
new file mode 100644
index 00000000..24171d39
--- /dev/null
+++ b/2.3/containers/CCListLabels/Infix/index.html
@@ -0,0 +1,2 @@
+
+Infix (containers.CCListLabels.Infix)
\ No newline at end of file
diff --git a/2.3/containers/CCListLabels/Ref/index.html b/2.3/containers/CCListLabels/Ref/index.html
new file mode 100644
index 00000000..0d34dd03
--- /dev/null
+++ b/2.3/containers/CCListLabels/Ref/index.html
@@ -0,0 +1,3 @@
+
+Ref (containers.CCListLabels.Ref)
Add elements of the list at the beginning of the list ref. Elements
+at the end of the list will be at the beginning of the list ref.
\ No newline at end of file
diff --git a/2.3/containers/CCListLabels/Traverse/argument-1-M/index.html b/2.3/containers/CCListLabels/Traverse/argument-1-M/index.html
new file mode 100644
index 00000000..4d3ab9eb
--- /dev/null
+++ b/2.3/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/2.3/containers/CCListLabels/Traverse/index.html b/2.3/containers/CCListLabels/Traverse/index.html
new file mode 100644
index 00000000..e8fbf9d2
--- /dev/null
+++ b/2.3/containers/CCListLabels/Traverse/index.html
@@ -0,0 +1,4 @@
+
+Traverse (containers.CCListLabels.Traverse)
Like map_m but map_m_par f (x::l) evaluates f x and
+f l "in parallel" before combining their result (for instance
+in Lwt).
\ No newline at end of file
diff --git a/2.3/containers/CCListLabels/index.html b/2.3/containers/CCListLabels/index.html
new file mode 100644
index 00000000..7ca1c141
--- /dev/null
+++ b/2.3/containers/CCListLabels/index.html
@@ -0,0 +1,82 @@
+
+CCListLabels (containers.CCListLabels)
ModuleCCListLabels
Complements to list
type 'a sequence = ('a‑> unit) ‑> unit
type 'a gen = unit ‑>'a option
type 'a klist = unit ‑> [ `Nil | `Cons of 'a * 'aklist ]
type 'a printer = Format.formatter ‑>'a‑> unit
type 'a random_gen = Random.State.t ‑>'a
include module type of ListLabels
val length : 'a list ‑> int
val hd : 'a list ‑>'a
val compare_lengths : 'a list ‑>'b list ‑> int
val compare_length_with : 'a list ‑> len:int ‑> int
val cons : 'a‑>'a list ‑>'a list
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 : len:int ‑> f:(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 : f:('a‑> unit) ‑>'a list ‑> unit
val iteri : f:(int ‑>'a‑> unit) ‑>'a list ‑> unit
val map : f:('a‑>'b) ‑>'a list ‑>'b list
val mapi : f:(int ‑>'a‑>'b) ‑>'a list ‑>'b list
val rev_map : f:('a‑>'b) ‑>'a list ‑>'b list
val fold_left : f:('a‑>'b‑>'a) ‑> init:'a‑>'b list ‑>'a
val fold_right : f:('a‑>'b‑>'b) ‑>'a list ‑> init:'b‑>'b
val iter2 : f:('a‑>'b‑> unit) ‑>'a list ‑>'b list ‑> unit
val map2 : f:('a‑>'b‑>'c) ‑>'a list ‑>'b list ‑>'c list
val rev_map2 : f:('a‑>'b‑>'c) ‑>'a list ‑>'b list ‑>'c list
val fold_left2 : f:('a‑>'b‑>'c‑>'a) ‑> init:'a‑>'b list ‑>'c list ‑>'a
val fold_right2 : f:('a‑>'b‑>'c‑>'c) ‑>'a list ‑>'b list ‑> init:'c‑>'c
val for_all : f:('a‑> bool) ‑>'a list ‑> bool
val exists : f:('a‑> bool) ‑>'a list ‑> bool
val for_all2 : f:('a‑>'b‑> bool) ‑>'a list ‑>'b list ‑> bool
val exists2 : f:('a‑>'b‑> bool) ‑>'a list ‑>'b list ‑> bool
val mem : 'a‑> set:'a list ‑> bool
val memq : 'a‑> set:'a list ‑> bool
val find : f:('a‑> bool) ‑>'a list ‑>'a
val find_opt : f:('a‑> bool) ‑>'a list ‑>'a option
val filter : f:('a‑> bool) ‑>'a list ‑>'a list
val find_all : f:('a‑> bool) ‑>'a list ‑>'a list
val partition : f:('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‑> map:('a * 'b) list ‑> bool
val mem_assq : 'a‑> map:('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 : cmp:('a‑>'a‑> int) ‑>'a list ‑>'a list
val stable_sort : cmp:('a‑>'a‑> int) ‑>'a list ‑>'a list
val fast_sort : cmp:('a‑>'a‑> int) ‑>'a list ‑>'a list
val sort_uniq : cmp:('a‑>'a‑> int) ‑>'a list ‑>'a list
val merge : cmp:('a‑>'a‑> int) ‑>'a list ‑>'a list ‑>'a list
Safe version of List.filter.
+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 is preserved.
All pairs of distinct positions of the list. list_diagonal l will
+return 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 list t
Group 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.
join key1 key2 ~merge 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 key1 key2 ~merge 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 key2 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 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].
find_map ~f l traverses l, applying f to each element. If for
+some element x, f x = Some y, then Some y is returned. Otherwise
+the call returns None.
Since: 0.11
val find_mapi : f:(int ‑>'a‑>'b option) ‑>'at‑>'b option
Like find_map, but also pass the index to the predicate function.
Since: 0.11
val find_idx : f:('a‑> bool) ‑>'at‑> (int * 'a) option
find_idx p x returns Some (i,x) where x is the i-th element of l,
+and p x holds. Otherwise returns None.
val remove : eq:('a‑>'a‑> bool) ‑> key:'a‑>'at‑>'at
remove ~key l removes every instance of key from l. Tail-recursive.
Set i-th element (removes the old one), or does nothing if
+index is too high.
+If the index is negative, it will set element starting from the end
+of the list.
Insert at i-th position, between the two existing elements. If the
+index is too high, append at the end of the list.
+If the index is negative, it will insert element starting from the end
+of the list.
Remove element at given index. Does nothing if the index is
+too high.
+If the index is negative, it will remove element starting from the end
+of the list.
Set Operators
Those operations maintain the invariant that the list does not
+contain duplicates (if it already satisfies it).
Remove duplicates w.r.t the equality predicate.
+Complexity is quadratic in the length of the list, but the order
+of elements is preserved. If you wish for a faster de-duplication
+but do not care about the order, use 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.
val pp : ?start:string ‑> ?stop:string ‑> ?sep:string ‑>'aprinter‑>'atprinter
Print the contents of a list.
\ No newline at end of file
diff --git a/2.3/containers/CCListLabels/module-type-MONAD/index.html b/2.3/containers/CCListLabels/module-type-MONAD/index.html
new file mode 100644
index 00000000..c74a4bba
--- /dev/null
+++ b/2.3/containers/CCListLabels/module-type-MONAD/index.html
@@ -0,0 +1,2 @@
+
+MONAD (containers.CCListLabels.MONAD)
\ No newline at end of file
diff --git a/2.3/containers/CCLock/.jbuilder-keep b/2.3/containers/CCLock/.jbuilder-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.3/containers/CCLock/LockRef/index.html b/2.3/containers/CCLock/LockRef/index.html
new file mode 100644
index 00000000..169799f4
--- /dev/null
+++ b/2.3/containers/CCLock/LockRef/index.html
@@ -0,0 +1,2 @@
+
+LockRef (containers.CCLock.LockRef)
ModuleCCLock.LockRef
Type allowing to manipulate the lock as a reference.
\ No newline at end of file
diff --git a/2.3/containers/CCLock/index.html b/2.3/containers/CCLock/index.html
new file mode 100644
index 00000000..da0c98cc
--- /dev/null
+++ b/2.3/containers/CCLock/index.html
@@ -0,0 +1,10 @@
+
+CCLock (containers.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/2.3/containers/CCMap/.jbuilder-keep b/2.3/containers/CCMap/.jbuilder-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.3/containers/CCMap/index.html b/2.3/containers/CCMap/index.html
new file mode 100644
index 00000000..d5ee9cc9
--- /dev/null
+++ b/2.3/containers/CCMap/index.html
@@ -0,0 +1,2 @@
+
+CCMap (containers.CCMap)
module Make : functor (O : Map.OrderedType) -> S with type 'a Make.t = 'a Map.Make(O).t and type Make.key = O.t
\ No newline at end of file
diff --git a/2.3/containers/CCMap/module-type-S/index.html b/2.3/containers/CCMap/module-type-S/index.html
new file mode 100644
index 00000000..7b263117
--- /dev/null
+++ b/2.3/containers/CCMap/module-type-S/index.html
@@ -0,0 +1,10 @@
+
+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.
Build a map from the given list 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.
\ No newline at end of file
diff --git a/2.3/containers/CCMixmap/.jbuilder-keep b/2.3/containers/CCMixmap/.jbuilder-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.3/containers/CCMixmap/Make/argument-1-X/index.html b/2.3/containers/CCMixmap/Make/argument-1-X/index.html
new file mode 100644
index 00000000..cb749597
--- /dev/null
+++ b/2.3/containers/CCMixmap/Make/argument-1-X/index.html
@@ -0,0 +1,2 @@
+
+1-X (containers.CCMixmap.Make.1-X)
\ No newline at end of file
diff --git a/2.3/containers/CCMixmap/Make/index.html b/2.3/containers/CCMixmap/Make/index.html
new file mode 100644
index 00000000..957ff0f2
--- /dev/null
+++ b/2.3/containers/CCMixmap/Make/index.html
@@ -0,0 +1,4 @@
+
+Make (containers.CCMixmap.Make)
\ No newline at end of file
diff --git a/2.3/containers/CCMixmap/index.html b/2.3/containers/CCMixmap/index.html
new file mode 100644
index 00000000..a6ac516a
--- /dev/null
+++ b/2.3/containers/CCMixmap/index.html
@@ -0,0 +1,25 @@
+
+CCMixmap (containers.CCMixmap)
ModuleCCMixmap
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/2.3/containers/CCMixmap/module-type-ORD/index.html b/2.3/containers/CCMixmap/module-type-ORD/index.html
new file mode 100644
index 00000000..3ec8f62f
--- /dev/null
+++ b/2.3/containers/CCMixmap/module-type-ORD/index.html
@@ -0,0 +1,2 @@
+
+ORD (containers.CCMixmap.ORD)
\ No newline at end of file
diff --git a/2.3/containers/CCMixmap/module-type-S/index.html b/2.3/containers/CCMixmap/module-type-S/index.html
new file mode 100644
index 00000000..703d77f5
--- /dev/null
+++ b/2.3/containers/CCMixmap/module-type-S/index.html
@@ -0,0 +1,4 @@
+
+S (containers.CCMixmap.S)
Module typeCCMixmap.S
type key
type t
A map containing values of different types, indexed by key.
\ No newline at end of file
diff --git a/2.3/containers/CCMixset/.jbuilder-keep b/2.3/containers/CCMixset/.jbuilder-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.3/containers/CCMixset/index.html b/2.3/containers/CCMixset/index.html
new file mode 100644
index 00000000..dd899ddc
--- /dev/null
+++ b/2.3/containers/CCMixset/index.html
@@ -0,0 +1,17 @@
+
+CCMixset (containers.CCMixset)
ModuleCCMixset
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/2.3/containers/CCMixtbl/.jbuilder-keep b/2.3/containers/CCMixtbl/.jbuilder-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.3/containers/CCMixtbl/index.html b/2.3/containers/CCMixtbl/index.html
new file mode 100644
index 00000000..d0bc0111
--- /dev/null
+++ b/2.3/containers/CCMixtbl/index.html
@@ -0,0 +1,32 @@
+
+CCMixtbl (containers.CCMixtbl)
ModuleCCMixtbl
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/2.3/containers/CCMonomorphic/.jbuilder-keep b/2.3/containers/CCMonomorphic/.jbuilder-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.3/containers/CCMonomorphic/index.html b/2.3/containers/CCMonomorphic/index.html
new file mode 100644
index 00000000..00170285
--- /dev/null
+++ b/2.3/containers/CCMonomorphic/index.html
@@ -0,0 +1,2 @@
+
+CCMonomorphic (containers.CCMonomorphic)
ModuleCCMonomorphic
Shadow unsafe functions and operators from Pervasives
Since: 2.0
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 ]
Deprecated Please use CCEqual.physical or Pervasives.(==) instead.
val (!=) : [ `Consider_using_CCEqual_physical ]
Since: 2.1
Deprecated Please use [not CCEqual.physical] or Pervasives.(!=) instead.
\ No newline at end of file
diff --git a/2.3/containers/CCMultiMap/.jbuilder-keep b/2.3/containers/CCMultiMap/.jbuilder-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.3/containers/CCMultiMap/Make/argument-1-K/index.html b/2.3/containers/CCMultiMap/Make/argument-1-K/index.html
new file mode 100644
index 00000000..30426542
--- /dev/null
+++ b/2.3/containers/CCMultiMap/Make/argument-1-K/index.html
@@ -0,0 +1,2 @@
+
+1-K (containers.CCMultiMap.Make.1-K)
\ No newline at end of file
diff --git a/2.3/containers/CCMultiMap/Make/argument-2-V/index.html b/2.3/containers/CCMultiMap/Make/argument-2-V/index.html
new file mode 100644
index 00000000..d8663848
--- /dev/null
+++ b/2.3/containers/CCMultiMap/Make/argument-2-V/index.html
@@ -0,0 +1,2 @@
+
+2-V (containers.CCMultiMap.Make.2-V)
\ No newline at end of file
diff --git a/2.3/containers/CCMultiMap/Make/index.html b/2.3/containers/CCMultiMap/Make/index.html
new file mode 100644
index 00000000..6e698cd0
--- /dev/null
+++ b/2.3/containers/CCMultiMap/Make/index.html
@@ -0,0 +1,3 @@
+
+Make (containers.CCMultiMap.Make)
\ No newline at end of file
diff --git a/2.3/containers/CCMultiMap/MakeBidir/argument-1-L/index.html b/2.3/containers/CCMultiMap/MakeBidir/argument-1-L/index.html
new file mode 100644
index 00000000..f6bdb159
--- /dev/null
+++ b/2.3/containers/CCMultiMap/MakeBidir/argument-1-L/index.html
@@ -0,0 +1,2 @@
+
+1-L (containers.CCMultiMap.MakeBidir.1-L)
\ No newline at end of file
diff --git a/2.3/containers/CCMultiMap/MakeBidir/argument-2-R/index.html b/2.3/containers/CCMultiMap/MakeBidir/argument-2-R/index.html
new file mode 100644
index 00000000..6deb89ff
--- /dev/null
+++ b/2.3/containers/CCMultiMap/MakeBidir/argument-2-R/index.html
@@ -0,0 +1,2 @@
+
+2-R (containers.CCMultiMap.MakeBidir.2-R)
\ No newline at end of file
diff --git a/2.3/containers/CCMultiMap/MakeBidir/index.html b/2.3/containers/CCMultiMap/MakeBidir/index.html
new file mode 100644
index 00000000..841c67f3
--- /dev/null
+++ b/2.3/containers/CCMultiMap/MakeBidir/index.html
@@ -0,0 +1,2 @@
+
+MakeBidir (containers.CCMultiMap.MakeBidir)
\ No newline at end of file
diff --git a/2.3/containers/CCMultiMap/index.html b/2.3/containers/CCMultiMap/index.html
new file mode 100644
index 00000000..a17026e4
--- /dev/null
+++ b/2.3/containers/CCMultiMap/index.html
@@ -0,0 +1,4 @@
+
+CCMultiMap (containers.CCMultiMap)
\ No newline at end of file
diff --git a/2.3/containers/CCMultiMap/module-type-BIDIR/index.html b/2.3/containers/CCMultiMap/module-type-BIDIR/index.html
new file mode 100644
index 00000000..f1223551
--- /dev/null
+++ b/2.3/containers/CCMultiMap/module-type-BIDIR/index.html
@@ -0,0 +1,2 @@
+
+BIDIR (containers.CCMultiMap.BIDIR)
\ No newline at end of file
diff --git a/2.3/containers/CCMultiMap/module-type-OrderedType/index.html b/2.3/containers/CCMultiMap/module-type-OrderedType/index.html
new file mode 100644
index 00000000..084c5146
--- /dev/null
+++ b/2.3/containers/CCMultiMap/module-type-OrderedType/index.html
@@ -0,0 +1,2 @@
+
+OrderedType (containers.CCMultiMap.OrderedType)
\ No newline at end of file
diff --git a/2.3/containers/CCMultiMap/module-type-S/index.html b/2.3/containers/CCMultiMap/module-type-S/index.html
new file mode 100644
index 00000000..89e5faec
--- /dev/null
+++ b/2.3/containers/CCMultiMap/module-type-S/index.html
@@ -0,0 +1,3 @@
+
+S (containers.CCMultiMap.S)
\ No newline at end of file
diff --git a/2.3/containers/CCMultiSet/.jbuilder-keep b/2.3/containers/CCMultiSet/.jbuilder-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.3/containers/CCMultiSet/Make/index.html b/2.3/containers/CCMultiSet/Make/index.html
new file mode 100644
index 00000000..6c21b12a
--- /dev/null
+++ b/2.3/containers/CCMultiSet/Make/index.html
@@ -0,0 +1,8 @@
+
+Make (containers.CCMultiSet.Make)
update set x f calls f n where n is the current multiplicity
+of x in set (0 to indicate its absence); the result of f n
+is the new multiplicity of x.
\ No newline at end of file
diff --git a/2.3/containers/CCMultiSet/index.html b/2.3/containers/CCMultiSet/index.html
new file mode 100644
index 00000000..ed143fa4
--- /dev/null
+++ b/2.3/containers/CCMultiSet/index.html
@@ -0,0 +1,2 @@
+
+CCMultiSet (containers.CCMultiSet)
module Make : functor (O : Set.OrderedType) -> S with type elt = O.t
\ No newline at end of file
diff --git a/2.3/containers/CCMultiSet/module-type-S/index.html b/2.3/containers/CCMultiSet/module-type-S/index.html
new file mode 100644
index 00000000..87901cb7
--- /dev/null
+++ b/2.3/containers/CCMultiSet/module-type-S/index.html
@@ -0,0 +1,8 @@
+
+S (containers.CCMultiSet.S)
update set x f calls f n where n is the current multiplicity
+of x in set (0 to indicate its absence); the result of f n
+is the new multiplicity of x.
\ No newline at end of file
diff --git a/2.3/containers/CCNativeint/.jbuilder-keep b/2.3/containers/CCNativeint/.jbuilder-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.3/containers/CCNativeint/Infix/index.html b/2.3/containers/CCNativeint/Infix/index.html
new file mode 100644
index 00000000..48c1b56c
--- /dev/null
+++ b/2.3/containers/CCNativeint/Infix/index.html
@@ -0,0 +1,2 @@
+
+Infix (containers.CCNativeint.Infix)
\ No newline at end of file
diff --git a/2.3/containers/CCNativeint/index.html b/2.3/containers/CCNativeint/index.html
new file mode 100644
index 00000000..57ac31f8
--- /dev/null
+++ b/2.3/containers/CCNativeint/index.html
@@ -0,0 +1,40 @@
+
+CCNativeint (containers.CCNativeint)
ModuleCCNativeint
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.
Integer division. Raise Division_by_zero if the second
+argument is zero. This division rounds the real quotient of
+its arguments towards zero, as specified for Pervasives.(/).
x mod y is the integer remainder.
+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.
Alias to Nativeint.of_float.
+Convert the given floating-point number to a native integer,
+discarding the fractional part (truncate towards 0).
+The result of the conversion is undefined if, after truncation, the number
+is outside the range [CCNativeint.min_int, CCNativeint.max_int].
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.
\ No newline at end of file
diff --git a/2.3/containers/CCOpt/.jbuilder-keep b/2.3/containers/CCOpt/.jbuilder-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.3/containers/CCOpt/Infix/index.html b/2.3/containers/CCOpt/Infix/index.html
new file mode 100644
index 00000000..e64cbeba
--- /dev/null
+++ b/2.3/containers/CCOpt/Infix/index.html
@@ -0,0 +1,2 @@
+
+Infix (containers.CCOpt.Infix)
\ No newline at end of file
diff --git a/2.3/containers/CCOpt/index.html b/2.3/containers/CCOpt/index.html
new file mode 100644
index 00000000..48499874
--- /dev/null
+++ b/2.3/containers/CCOpt/index.html
@@ -0,0 +1,12 @@
+
+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 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.
Parameterhandler: 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 f x y is similar to wrap but for binary functions.
\ No newline at end of file
diff --git a/2.3/containers/CCOrd/.jbuilder-keep b/2.3/containers/CCOrd/.jbuilder-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.3/containers/CCOrd/Infix/index.html b/2.3/containers/CCOrd/Infix/index.html
new file mode 100644
index 00000000..518312f2
--- /dev/null
+++ b/2.3/containers/CCOrd/Infix/index.html
@@ -0,0 +1,4 @@
+
+Infix (containers.CCOrd.Infix)
\ No newline at end of file
diff --git a/2.3/containers/CCOrd/index.html b/2.3/containers/CCOrd/index.html
new file mode 100644
index 00000000..bf28fcc5
--- /dev/null
+++ b/2.3/containers/CCOrd/index.html
@@ -0,0 +1,15 @@
+
+CCOrd (containers.CCOrd)
ModuleCCOrd
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/2.3/containers/CCPair/.jbuilder-keep b/2.3/containers/CCPair/.jbuilder-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.3/containers/CCPair/index.html b/2.3/containers/CCPair/index.html
new file mode 100644
index 00000000..e236b9aa
--- /dev/null
+++ b/2.3/containers/CCPair/index.html
@@ -0,0 +1,4 @@
+
+CCPair (containers.CCPair)
Print a pair given an optional separator and a method for printing each of its elements.
\ No newline at end of file
diff --git a/2.3/containers/CCParse/.jbuilder-keep b/2.3/containers/CCParse/.jbuilder-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.3/containers/CCParse/Infix/index.html b/2.3/containers/CCParse/Infix/index.html
new file mode 100644
index 00000000..2db2c0dc
--- /dev/null
+++ b/2.3/containers/CCParse/Infix/index.html
@@ -0,0 +1,13 @@
+
+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/2.3/containers/CCParse/U/index.html b/2.3/containers/CCParse/U/index.html
new file mode 100644
index 00000000..317eebba
--- /dev/null
+++ b/2.3/containers/CCParse/U/index.html
@@ -0,0 +1,6 @@
+
+U (containers.CCParse.U)
ModuleCCParse.U
val list : ?start:string ‑> ?stop:string ‑> ?sep:string ‑>'at‑>'a list t
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/2.3/containers/CCParse/index.html b/2.3/containers/CCParse/index.html
new file mode 100644
index 00000000..e8f3a6d3
--- /dev/null
+++ b/2.3/containers/CCParse/index.html
@@ -0,0 +1,51 @@
+
+CCParse (containers.CCParse)
ModuleCCParse
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/2.3/containers/CCPersistentArray/.jbuilder-keep b/2.3/containers/CCPersistentArray/.jbuilder-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.3/containers/CCPersistentArray/index.html b/2.3/containers/CCPersistentArray/index.html
new file mode 100644
index 00000000..2047d50a
--- /dev/null
+++ b/2.3/containers/CCPersistentArray/index.html
@@ -0,0 +1,20 @@
+
+CCPersistentArray (containers.CCPersistentArray)
ModuleCCPersistentArray
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.
RaisesInvalid_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.
init n f returns a persistent array of length n, with element
+i initialized to the result of f i.
RaisesInvalid_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/2.3/containers/CCPersistentHashtbl/.jbuilder-keep b/2.3/containers/CCPersistentHashtbl/.jbuilder-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.3/containers/CCPersistentHashtbl/Make/argument-1-H/index.html b/2.3/containers/CCPersistentHashtbl/Make/argument-1-H/index.html
new file mode 100644
index 00000000..e6b80cdb
--- /dev/null
+++ b/2.3/containers/CCPersistentHashtbl/Make/argument-1-H/index.html
@@ -0,0 +1,2 @@
+
+1-H (containers.CCPersistentHashtbl.Make.1-H)
\ No newline at end of file
diff --git a/2.3/containers/CCPersistentHashtbl/Make/index.html b/2.3/containers/CCPersistentHashtbl/Make/index.html
new file mode 100644
index 00000000..0a7ee395
--- /dev/null
+++ b/2.3/containers/CCPersistentHashtbl/Make/index.html
@@ -0,0 +1,10 @@
+
+Make (containers.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/2.3/containers/CCPersistentHashtbl/index.html b/2.3/containers/CCPersistentHashtbl/index.html
new file mode 100644
index 00000000..09f6cdaf
--- /dev/null
+++ b/2.3/containers/CCPersistentHashtbl/index.html
@@ -0,0 +1,5 @@
+
+CCPersistentHashtbl (containers.CCPersistentHashtbl)
ModuleCCPersistentHashtbl
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).
\ No newline at end of file
diff --git a/2.3/containers/CCPersistentHashtbl/module-type-HashedType/index.html b/2.3/containers/CCPersistentHashtbl/module-type-HashedType/index.html
new file mode 100644
index 00000000..7126730a
--- /dev/null
+++ b/2.3/containers/CCPersistentHashtbl/module-type-HashedType/index.html
@@ -0,0 +1,2 @@
+
+HashedType (containers.CCPersistentHashtbl.HashedType)
\ No newline at end of file
diff --git a/2.3/containers/CCPersistentHashtbl/module-type-S/index.html b/2.3/containers/CCPersistentHashtbl/module-type-S/index.html
new file mode 100644
index 00000000..1095ac6f
--- /dev/null
+++ b/2.3/containers/CCPersistentHashtbl/module-type-S/index.html
@@ -0,0 +1,10 @@
+
+S (containers.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/2.3/containers/CCPool/.jbuilder-keep b/2.3/containers/CCPool/.jbuilder-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.3/containers/CCPool/Make/Fut/Infix/index.html b/2.3/containers/CCPool/Make/Fut/Infix/index.html
new file mode 100644
index 00000000..37a64716
--- /dev/null
+++ b/2.3/containers/CCPool/Make/Fut/Infix/index.html
@@ -0,0 +1,2 @@
+
+Infix (containers.CCPool.Make.Fut.Infix)
\ No newline at end of file
diff --git a/2.3/containers/CCPool/Make/Fut/index.html b/2.3/containers/CCPool/Make/Fut/index.html
new file mode 100644
index 00000000..114eb6e2
--- /dev/null
+++ b/2.3/containers/CCPool/Make/Fut/index.html
@@ -0,0 +1,22 @@
+
+Fut (containers.CCPool.Make.Fut)
ModuleCCPool.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 success.
+The handler should not call functions on the future.
+Might be evaluated now if the future is already done.
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/2.3/containers/CCPool/Make/argument-1-P/index.html b/2.3/containers/CCPool/Make/argument-1-P/index.html
new file mode 100644
index 00000000..730f239a
--- /dev/null
+++ b/2.3/containers/CCPool/Make/argument-1-P/index.html
@@ -0,0 +1,2 @@
+
+1-P (containers.CCPool.Make.1-P)
ParameterCCPool.Make.1-P
val max_size : int
Maximum number of threads in the pool.
\ No newline at end of file
diff --git a/2.3/containers/CCPool/Make/index.html b/2.3/containers/CCPool/Make/index.html
new file mode 100644
index 00000000..97f31b38
--- /dev/null
+++ b/2.3/containers/CCPool/Make/index.html
@@ -0,0 +1,3 @@
+
+Make (containers.CCPool.Make)
\ No newline at end of file
diff --git a/2.3/containers/CCPool/index.html b/2.3/containers/CCPool/index.html
new file mode 100644
index 00000000..65650a6f
--- /dev/null
+++ b/2.3/containers/CCPool/index.html
@@ -0,0 +1,2 @@
+
+CCPool (containers.CCPool)
\ No newline at end of file
diff --git a/2.3/containers/CCPool/module-type-PARAM/index.html b/2.3/containers/CCPool/module-type-PARAM/index.html
new file mode 100644
index 00000000..a5ede94c
--- /dev/null
+++ b/2.3/containers/CCPool/module-type-PARAM/index.html
@@ -0,0 +1,2 @@
+
+PARAM (containers.CCPool.PARAM)
Module typeCCPool.PARAM
val max_size : int
Maximum number of threads in the pool.
\ No newline at end of file
diff --git a/2.3/containers/CCRAL/.jbuilder-keep b/2.3/containers/CCRAL/.jbuilder-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.3/containers/CCRAL/Infix/index.html b/2.3/containers/CCRAL/Infix/index.html
new file mode 100644
index 00000000..6aefcd09
--- /dev/null
+++ b/2.3/containers/CCRAL/Infix/index.html
@@ -0,0 +1,2 @@
+
+Infix (containers.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/2.3/containers/CCRAL/index.html b/2.3/containers/CCRAL/index.html
new file mode 100644
index 00000000..ffd61766
--- /dev/null
+++ b/2.3/containers/CCRAL/index.html
@@ -0,0 +1,6 @@
+
+CCRAL (containers.CCRAL)
ModuleCCRAL
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/2.3/containers/CCRandom/.jbuilder-keep b/2.3/containers/CCRandom/.jbuilder-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.3/containers/CCRandom/index.html b/2.3/containers/CCRandom/index.html
new file mode 100644
index 00000000..d6a34322
--- /dev/null
+++ b/2.3/containers/CCRandom/index.html
@@ -0,0 +1,23 @@
+
+CCRandom (containers.CCRandom)
replicate n g makes a list of n elements which are all generated
+randomly using g.
val sample_without_replacement : compare:('a‑>'a‑> int) ‑> int ‑>'at‑>'a list t
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.
Parametermax: : maximum number of retries. Default 10.
val try_successively : 'a option t list ‑>'a option t
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 list t‑>'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!
Parametersub1: cases that recurse on one value.
Parametersub2: cases that use the recursive gen twice.
Parametersubn: cases that use a list of recursive cases.
Using a random state (possibly the one in argument) run a generator.
\ No newline at end of file
diff --git a/2.3/containers/CCRef/.jbuilder-keep b/2.3/containers/CCRef/.jbuilder-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.3/containers/CCRef/index.html b/2.3/containers/CCRef/index.html
new file mode 100644
index 00000000..48464c9a
--- /dev/null
+++ b/2.3/containers/CCRef/index.html
@@ -0,0 +1,2 @@
+
+CCRef (containers.CCRef)
\ No newline at end of file
diff --git a/2.3/containers/CCResult/.jbuilder-keep b/2.3/containers/CCResult/.jbuilder-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.3/containers/CCResult/Infix/index.html b/2.3/containers/CCResult/Infix/index.html
new file mode 100644
index 00000000..a6636cf7
--- /dev/null
+++ b/2.3/containers/CCResult/Infix/index.html
@@ -0,0 +1,5 @@
+
+Infix (containers.CCResult.Infix)
ModuleCCResult.Infix
val (>|=) : ('a, 'err) t‑> ('a‑>'b) ‑> ('b, 'err) t
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.
\ No newline at end of file
diff --git a/2.3/containers/CCResult/Traverse/argument-1-M/index.html b/2.3/containers/CCResult/Traverse/argument-1-M/index.html
new file mode 100644
index 00000000..63ae4079
--- /dev/null
+++ b/2.3/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/2.3/containers/CCResult/Traverse/index.html b/2.3/containers/CCResult/Traverse/index.html
new file mode 100644
index 00000000..70819ccb
--- /dev/null
+++ b/2.3/containers/CCResult/Traverse/index.html
@@ -0,0 +1,2 @@
+
+Traverse (containers.CCResult.Traverse)
val retry_m : int ‑> (unit ‑> ('a, 'err) tM.t) ‑> ('a, 'err list) tM.t
\ No newline at end of file
diff --git a/2.3/containers/CCResult/index.html b/2.3/containers/CCResult/index.html
new file mode 100644
index 00000000..07aebea5
--- /dev/null
+++ b/2.3/containers/CCResult/index.html
@@ -0,0 +1,28 @@
+
+CCResult (containers.CCResult)
ModuleCCResult
Error Monad
Uses the new "result" type from OCaml 4.03.
Since: 0.16
type 'a sequence = ('a‑> unit) ‑> unit
type 'a equal = 'a‑>'a‑> bool
type 'a ord = 'a‑>'a‑> int
type 'a printer = Format.formatter ‑>'a‑> unit
Basics
Since: 1.5
include module type of sig ... end
type ('a, 'b) result = ('a, 'b) Pervasives.result =
| Ok of 'a
| Error of 'b
type (+'good, +'bad) t = ('good, 'bad) Result.result =
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.
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 map_l : ('a‑> ('b, 'err) t) ‑>'a list ‑> ('b list, 'err) t
val fold_l : ('b‑>'a‑> ('b, 'err) t) ‑>'b‑>'a list ‑> ('b, 'err) t
val fold_seq : ('b‑>'a‑> ('b, 'err) t) ‑>'b‑>'asequence‑> ('b, 'err) t
Misc
val choose : ('a, 'err) t list ‑> ('a, 'err list) 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/2.3/containers/CCResult/module-type-MONAD/index.html b/2.3/containers/CCResult/module-type-MONAD/index.html
new file mode 100644
index 00000000..95d076f3
--- /dev/null
+++ b/2.3/containers/CCResult/module-type-MONAD/index.html
@@ -0,0 +1,2 @@
+
+MONAD (containers.CCResult.MONAD)
\ No newline at end of file
diff --git a/2.3/containers/CCRingBuffer/.jbuilder-keep b/2.3/containers/CCRingBuffer/.jbuilder-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.3/containers/CCRingBuffer/Array/Byte/index.html b/2.3/containers/CCRingBuffer/Array/Byte/index.html
new file mode 100644
index 00000000..12824a27
--- /dev/null
+++ b/2.3/containers/CCRingBuffer/Array/Byte/index.html
@@ -0,0 +1,5 @@
+
+Byte (containers.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/2.3/containers/CCRingBuffer/Array/Make/argument-1-Elt/index.html b/2.3/containers/CCRingBuffer/Array/Make/argument-1-Elt/index.html
new file mode 100644
index 00000000..76575963
--- /dev/null
+++ b/2.3/containers/CCRingBuffer/Array/Make/argument-1-Elt/index.html
@@ -0,0 +1,2 @@
+
+1-Elt (containers.CCRingBuffer.Array.Make.1-Elt)
\ No newline at end of file
diff --git a/2.3/containers/CCRingBuffer/Array/Make/index.html b/2.3/containers/CCRingBuffer/Array/Make/index.html
new file mode 100644
index 00000000..e4d6b8f9
--- /dev/null
+++ b/2.3/containers/CCRingBuffer/Array/Make/index.html
@@ -0,0 +1,5 @@
+
+Make (containers.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/2.3/containers/CCRingBuffer/Array/index.html b/2.3/containers/CCRingBuffer/Array/index.html
new file mode 100644
index 00000000..37dc64c1
--- /dev/null
+++ b/2.3/containers/CCRingBuffer/Array/index.html
@@ -0,0 +1,2 @@
+
+Array (containers.CCRingBuffer.Array)
module Byte : S with type elt = char and type t = Bytes.t
Efficient array version for the char type
module Make : functor (Elt : sig ... end) -> S with type elt = Elt.t and type t = Elt.t array
Makes an array given an arbitrary element type
\ No newline at end of file
diff --git a/2.3/containers/CCRingBuffer/Array/module-type-S/index.html b/2.3/containers/CCRingBuffer/Array/module-type-S/index.html
new file mode 100644
index 00000000..299ce80d
--- /dev/null
+++ b/2.3/containers/CCRingBuffer/Array/module-type-S/index.html
@@ -0,0 +1,5 @@
+
+S (containers.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/2.3/containers/CCRingBuffer/Byte/index.html b/2.3/containers/CCRingBuffer/Byte/index.html
new file mode 100644
index 00000000..65358dea
--- /dev/null
+++ b/2.3/containers/CCRingBuffer/Byte/index.html
@@ -0,0 +1,15 @@
+
+Byte (containers.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.
RaisesInvalid_argument: if o,len is not a valid slice of s.
\ No newline at end of file
diff --git a/2.3/containers/CCRingBuffer/Make/Array/index.html b/2.3/containers/CCRingBuffer/Make/Array/index.html
new file mode 100644
index 00000000..89dc6ef7
--- /dev/null
+++ b/2.3/containers/CCRingBuffer/Make/Array/index.html
@@ -0,0 +1,5 @@
+
+Array (containers.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/2.3/containers/CCRingBuffer/Make/argument-1-X/index.html b/2.3/containers/CCRingBuffer/Make/argument-1-X/index.html
new file mode 100644
index 00000000..e33ec3ee
--- /dev/null
+++ b/2.3/containers/CCRingBuffer/Make/argument-1-X/index.html
@@ -0,0 +1,2 @@
+
+1-X (containers.CCRingBuffer.Make.1-X)
\ No newline at end of file
diff --git a/2.3/containers/CCRingBuffer/Make/index.html b/2.3/containers/CCRingBuffer/Make/index.html
new file mode 100644
index 00000000..73471eac
--- /dev/null
+++ b/2.3/containers/CCRingBuffer/Make/index.html
@@ -0,0 +1,15 @@
+
+Make (containers.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.
RaisesInvalid_argument: if o,len is not a valid slice of s.
\ No newline at end of file
diff --git a/2.3/containers/CCRingBuffer/MakeFromArray/argument-1-A/index.html b/2.3/containers/CCRingBuffer/MakeFromArray/argument-1-A/index.html
new file mode 100644
index 00000000..3d2b786e
--- /dev/null
+++ b/2.3/containers/CCRingBuffer/MakeFromArray/argument-1-A/index.html
@@ -0,0 +1,5 @@
+
+1-A (containers.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/2.3/containers/CCRingBuffer/MakeFromArray/index.html b/2.3/containers/CCRingBuffer/MakeFromArray/index.html
new file mode 100644
index 00000000..8d29c593
--- /dev/null
+++ b/2.3/containers/CCRingBuffer/MakeFromArray/index.html
@@ -0,0 +1,15 @@
+
+MakeFromArray (containers.CCRingBuffer.MakeFromArray)
ModuleCCRingBuffer.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.
RaisesInvalid_argument: if o,len is not a valid slice of s.
\ No newline at end of file
diff --git a/2.3/containers/CCRingBuffer/index.html b/2.3/containers/CCRingBuffer/index.html
new file mode 100644
index 00000000..54701cb5
--- /dev/null
+++ b/2.3/containers/CCRingBuffer/index.html
@@ -0,0 +1,3 @@
+
+CCRingBuffer (containers.CCRingBuffer)
ModuleCCRingBuffer
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/2.3/containers/CCRingBuffer/module-type-S/Array/index.html b/2.3/containers/CCRingBuffer/module-type-S/Array/index.html
new file mode 100644
index 00000000..902a9147
--- /dev/null
+++ b/2.3/containers/CCRingBuffer/module-type-S/Array/index.html
@@ -0,0 +1,5 @@
+
+Array (containers.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/2.3/containers/CCRingBuffer/module-type-S/index.html b/2.3/containers/CCRingBuffer/module-type-S/index.html
new file mode 100644
index 00000000..f7c0390a
--- /dev/null
+++ b/2.3/containers/CCRingBuffer/module-type-S/index.html
@@ -0,0 +1,16 @@
+
+S (containers.CCRingBuffer.S)
Module typeCCRingBuffer.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.
RaisesInvalid_argument: if o,len is not a valid slice of s.
\ No newline at end of file
diff --git a/2.3/containers/CCSemaphore/.jbuilder-keep b/2.3/containers/CCSemaphore/.jbuilder-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.3/containers/CCSemaphore/index.html b/2.3/containers/CCSemaphore/index.html
new file mode 100644
index 00000000..3faa68b0
--- /dev/null
+++ b/2.3/containers/CCSemaphore/index.html
@@ -0,0 +1,6 @@
+
+CCSemaphore (containers.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/2.3/containers/CCSet/.jbuilder-keep b/2.3/containers/CCSet/.jbuilder-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.3/containers/CCSet/index.html b/2.3/containers/CCSet/index.html
new file mode 100644
index 00000000..55922017
--- /dev/null
+++ b/2.3/containers/CCSet/index.html
@@ -0,0 +1,2 @@
+
+CCSet (containers.CCSet)
module Make : functor (O : Set.OrderedType) -> S with type Make.t = Set.Make(O).t and type Make.elt = O.t
\ No newline at end of file
diff --git a/2.3/containers/CCSet/module-type-S/index.html b/2.3/containers/CCSet/module-type-S/index.html
new file mode 100644
index 00000000..938d6901
--- /dev/null
+++ b/2.3/containers/CCSet/module-type-S/index.html
@@ -0,0 +1,3 @@
+
+S (containers.CCSet.S)
to_list t converts the set t to a list of the elements.
val pp : ?start:string ‑> ?stop:string ‑> ?sep:string ‑>eltprinter‑>tprinter
Print the set.
\ No newline at end of file
diff --git a/2.3/containers/CCSexp/.jbuilder-keep b/2.3/containers/CCSexp/.jbuilder-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.3/containers/CCSexp/Decoder/index.html b/2.3/containers/CCSexp/Decoder/index.html
new file mode 100644
index 00000000..27b6071a
--- /dev/null
+++ b/2.3/containers/CCSexp/Decoder/index.html
@@ -0,0 +1,3 @@
+
+Decoder (containers.CCSexp.Decoder)
Parse the next S-expression or return an error if the input isn't
+long enough or isn't a proper S-expression.
\ No newline at end of file
diff --git a/2.3/containers/CCSexp/index.html b/2.3/containers/CCSexp/index.html
new file mode 100644
index 00000000..4f270207
--- /dev/null
+++ b/2.3/containers/CCSexp/index.html
@@ -0,0 +1,8 @@
+
+CCSexp (containers.CCSexp)
val parse_chan : Pervasives.in_channel ‑>tor_error
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 : Pervasives.in_channel ‑>tor_errorgen
Parse a channel into a generator of S-expressions.
val parse_chan_list : Pervasives.in_channel ‑>t list or_error
\ No newline at end of file
diff --git a/2.3/containers/CCSexp_lex/.jbuilder-keep b/2.3/containers/CCSexp_lex/.jbuilder-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.3/containers/CCSexp_lex/index.html b/2.3/containers/CCSexp_lex/index.html
new file mode 100644
index 00000000..61074d6b
--- /dev/null
+++ b/2.3/containers/CCSexp_lex/index.html
@@ -0,0 +1,2 @@
+
+CCSexp_lex (containers.CCSexp_lex)
ModuleCCSexp_lex
type token =
| ATOM of string
| LIST_OPEN
| LIST_CLOSE
| EOI
exception Error of int * int * string
val error : Lexing.lexbuf ‑> string ‑>'a
type unescape_state =
| Not_escaped
| Escaped
| Escaped_int_1 of int
| Escaped_int_2 of int
val char_equal : char ‑> char ‑> bool
val remove_quotes : Lexing.lexbuf ‑> string ‑> string
val __ocaml_lex_token_rec : Lexing.lexbuf ‑> int ‑>token
\ No newline at end of file
diff --git a/2.3/containers/CCSimple_queue/.jbuilder-keep b/2.3/containers/CCSimple_queue/.jbuilder-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.3/containers/CCSimple_queue/Infix/index.html b/2.3/containers/CCSimple_queue/Infix/index.html
new file mode 100644
index 00000000..16d9a506
--- /dev/null
+++ b/2.3/containers/CCSimple_queue/Infix/index.html
@@ -0,0 +1,2 @@
+
+Infix (containers.CCSimple_queue.Infix)
\ No newline at end of file
diff --git a/2.3/containers/CCSimple_queue/index.html b/2.3/containers/CCSimple_queue/index.html
new file mode 100644
index 00000000..8da24e45
--- /dev/null
+++ b/2.3/containers/CCSimple_queue/index.html
@@ -0,0 +1,4 @@
+
+CCSimple_queue (containers.CCSimple_queue)
ModuleCCSimple_queue
Functional queues (fifo)
Simple implementation of functional queues
Since: 1.3
type 'a sequence = ('a‑> unit) ‑> unit
type 'a printer = Format.formatter ‑>'a‑> unit
type 'a klist = unit ‑> [ `Nil | `Cons of 'a * 'aklist ]
\ No newline at end of file
diff --git a/2.3/containers/CCString/.jbuilder-keep b/2.3/containers/CCString/.jbuilder-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.3/containers/CCString/Find/index.html b/2.3/containers/CCString/Find/index.html
new file mode 100644
index 00000000..b2e36b81
--- /dev/null
+++ b/2.3/containers/CCString/Find/index.html
@@ -0,0 +1,2 @@
+
+Find (containers.CCString.Find)
val find : ?start:int ‑> pattern:[ `Direct ] pattern‑> string ‑> int
Search for pattern in the string, left-to-right.
Returns the offset of the first match, -1 otherwise.
Parameterstart: offset in string at which we start.
val rfind : ?start:int ‑> pattern:[ `Reverse ] pattern‑> string ‑> int
Search for pattern in the string, right-to-left.
Returns the offset of the start of the first match from the right, -1 otherwise.
Parameterstart: right-offset in string at which we start.
\ No newline at end of file
diff --git a/2.3/containers/CCString/Split/index.html b/2.3/containers/CCString/Split/index.html
new file mode 100644
index 00000000..c3d894e5
--- /dev/null
+++ b/2.3/containers/CCString/Split/index.html
@@ -0,0 +1,9 @@
+
+Split (containers.CCString.Split)
ModuleCCString.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.
val klist_cpy : ?drop:drop_if_empty‑> by:string ‑> string ‑> string klist
val left : by:string ‑> string ‑> (string * string) option
Split on the first occurrence of by from the leftmost part of
+the string.
Since: 0.12
val left_exn : by:string ‑> string ‑> string * string
Split on the first occurrence of by from the leftmost part of the string.
RaisesNot_found: if by is not part of the string.
Since: 0.16
val right : by:string ‑> string ‑> (string * string) option
Split on the first occurrence of by from the rightmost part of
+the string.
Since: 0.12
val right_exn : by:string ‑> string ‑> string * string
Split on the first occurrence of by from the rightmost part of the string.
RaisesNot_found: if by is not part of the string.
Since: 0.16
\ No newline at end of file
diff --git a/2.3/containers/CCString/Sub/index.html b/2.3/containers/CCString/Sub/index.html
new file mode 100644
index 00000000..7dfdd05c
--- /dev/null
+++ b/2.3/containers/CCString/Sub/index.html
@@ -0,0 +1,3 @@
+
+Sub (containers.CCString.Sub)
\ No newline at end of file
diff --git a/2.3/containers/CCString/index.html b/2.3/containers/CCString/index.html
new file mode 100644
index 00000000..4aa59dd8
--- /dev/null
+++ b/2.3/containers/CCString/index.html
@@ -0,0 +1,22 @@
+
+CCString (containers.CCString)
ModuleCCString
Basic String Utils
type 'a gen = unit ‑>'a option
type 'a sequence = ('a‑> unit) ‑> unit
type 'a klist = unit ‑> [ `Nil | `Cons of 'a * 'aklist ]
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).
compare_versions a b compares version strings a and b,
+considering that numbers are above text.
Since: 0.13
val compare_natural : string ‑> string ‑> int
Natural Sort Order, comparing chunks of digits as natural numbers.
+https://en.wikipedia.org/wiki/Natural_sort_order
Since: 1.3
val edit_distance : string ‑> string ‑> int
Edition distance between two strings. This satisfies the classical
+distance axioms: it is always positive, symmetric, and satisfies
+the formula distance a b + distance b c >= distance a c.
\ No newline at end of file
diff --git a/2.3/containers/CCString/module-type-S/index.html b/2.3/containers/CCString/module-type-S/index.html
new file mode 100644
index 00000000..e91d8c6d
--- /dev/null
+++ b/2.3/containers/CCString/module-type-S/index.html
@@ -0,0 +1,3 @@
+
+S (containers.CCString.S)
\ No newline at end of file
diff --git a/2.3/containers/CCThread/.jbuilder-keep b/2.3/containers/CCThread/.jbuilder-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.3/containers/CCThread/Arr/index.html b/2.3/containers/CCThread/Arr/index.html
new file mode 100644
index 00000000..47a52d0e
--- /dev/null
+++ b/2.3/containers/CCThread/Arr/index.html
@@ -0,0 +1,3 @@
+
+Arr (containers.CCThread.Arr)
\ No newline at end of file
diff --git a/2.3/containers/CCThread/Barrier/index.html b/2.3/containers/CCThread/Barrier/index.html
new file mode 100644
index 00000000..355e13fc
--- /dev/null
+++ b/2.3/containers/CCThread/Barrier/index.html
@@ -0,0 +1,6 @@
+
+Barrier (containers.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/2.3/containers/CCThread/index.html b/2.3/containers/CCThread/index.html
new file mode 100644
index 00000000..7de06e85
--- /dev/null
+++ b/2.3/containers/CCThread/index.html
@@ -0,0 +1,2 @@
+
+CCThread (containers.CCThread)
\ No newline at end of file
diff --git a/2.3/containers/CCTimer/.jbuilder-keep b/2.3/containers/CCTimer/.jbuilder-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.3/containers/CCTimer/index.html b/2.3/containers/CCTimer/index.html
new file mode 100644
index 00000000..9119e03e
--- /dev/null
+++ b/2.3/containers/CCTimer/index.html
@@ -0,0 +1,6 @@
+
+CCTimer (containers.CCTimer)
ModuleCCTimer
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/2.3/containers/CCTrie/.jbuilder-keep b/2.3/containers/CCTrie/.jbuilder-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.3/containers/CCTrie/Make/argument-1-W/index.html b/2.3/containers/CCTrie/Make/argument-1-W/index.html
new file mode 100644
index 00000000..73237c7f
--- /dev/null
+++ b/2.3/containers/CCTrie/Make/argument-1-W/index.html
@@ -0,0 +1,2 @@
+
+1-W (containers.CCTrie.Make.1-W)
\ No newline at end of file
diff --git a/2.3/containers/CCTrie/Make/index.html b/2.3/containers/CCTrie/Make/index.html
new file mode 100644
index 00000000..3a010d74
--- /dev/null
+++ b/2.3/containers/CCTrie/Make/index.html
@@ -0,0 +1,11 @@
+
+Make (containers.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/2.3/containers/CCTrie/MakeArray/argument-1-X/index.html b/2.3/containers/CCTrie/MakeArray/argument-1-X/index.html
new file mode 100644
index 00000000..f0bd1a35
--- /dev/null
+++ b/2.3/containers/CCTrie/MakeArray/argument-1-X/index.html
@@ -0,0 +1,2 @@
+
+1-X (containers.CCTrie.MakeArray.1-X)
\ No newline at end of file
diff --git a/2.3/containers/CCTrie/MakeArray/index.html b/2.3/containers/CCTrie/MakeArray/index.html
new file mode 100644
index 00000000..2b7afb77
--- /dev/null
+++ b/2.3/containers/CCTrie/MakeArray/index.html
@@ -0,0 +1,11 @@
+
+MakeArray (containers.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/2.3/containers/CCTrie/MakeList/argument-1-X/index.html b/2.3/containers/CCTrie/MakeList/argument-1-X/index.html
new file mode 100644
index 00000000..3889db02
--- /dev/null
+++ b/2.3/containers/CCTrie/MakeList/argument-1-X/index.html
@@ -0,0 +1,2 @@
+
+1-X (containers.CCTrie.MakeList.1-X)
\ No newline at end of file
diff --git a/2.3/containers/CCTrie/MakeList/index.html b/2.3/containers/CCTrie/MakeList/index.html
new file mode 100644
index 00000000..a2632ff3
--- /dev/null
+++ b/2.3/containers/CCTrie/MakeList/index.html
@@ -0,0 +1,11 @@
+
+MakeList (containers.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/2.3/containers/CCTrie/String/index.html b/2.3/containers/CCTrie/String/index.html
new file mode 100644
index 00000000..da0f0fb0
--- /dev/null
+++ b/2.3/containers/CCTrie/String/index.html
@@ -0,0 +1,11 @@
+
+String (containers.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/2.3/containers/CCTrie/index.html b/2.3/containers/CCTrie/index.html
new file mode 100644
index 00000000..24d35c72
--- /dev/null
+++ b/2.3/containers/CCTrie/index.html
@@ -0,0 +1,2 @@
+
+CCTrie (containers.CCTrie)
ModuleCCTrie
Prefix Tree
type 'a sequence = ('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
module String : S with type key = string and type char_ = char
\ No newline at end of file
diff --git a/2.3/containers/CCTrie/module-type-ORDERED/index.html b/2.3/containers/CCTrie/module-type-ORDERED/index.html
new file mode 100644
index 00000000..a3632bf0
--- /dev/null
+++ b/2.3/containers/CCTrie/module-type-ORDERED/index.html
@@ -0,0 +1,2 @@
+
+ORDERED (containers.CCTrie.ORDERED)
\ No newline at end of file
diff --git a/2.3/containers/CCTrie/module-type-S/index.html b/2.3/containers/CCTrie/module-type-S/index.html
new file mode 100644
index 00000000..f6306a7f
--- /dev/null
+++ b/2.3/containers/CCTrie/module-type-S/index.html
@@ -0,0 +1,11 @@
+
+S (containers.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/2.3/containers/CCTrie/module-type-WORD/index.html b/2.3/containers/CCTrie/module-type-WORD/index.html
new file mode 100644
index 00000000..1248a793
--- /dev/null
+++ b/2.3/containers/CCTrie/module-type-WORD/index.html
@@ -0,0 +1,2 @@
+
+WORD (containers.CCTrie.WORD)
\ No newline at end of file
diff --git a/2.3/containers/CCUnix/.jbuilder-keep b/2.3/containers/CCUnix/.jbuilder-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.3/containers/CCUnix/Infix/index.html b/2.3/containers/CCUnix/Infix/index.html
new file mode 100644
index 00000000..d19ff168
--- /dev/null
+++ b/2.3/containers/CCUnix/Infix/index.html
@@ -0,0 +1,2 @@
+
+Infix (containers.CCUnix.Infix)
ModuleCCUnix.Infix
val (?|) : ('a, Buffer.t, unit, call_result) Pervasives.format4 ‑>'a
\ No newline at end of file
diff --git a/2.3/containers/CCUnix/index.html b/2.3/containers/CCUnix/index.html
new file mode 100644
index 00000000..8c3725cb
--- /dev/null
+++ b/2.3/containers/CCUnix/index.html
@@ -0,0 +1,18 @@
+
+CCUnix (containers.CCUnix)
ModuleCCUnix
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) Result.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, Buffer.t, unit, call_result) Pervasives.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.
Parameterstdin: if provided, the generator or string is consumed and fed to
+the subprocess input channel, which is then closed.
Parameterbufsize: buffer size used to read stdout and stderr.
Parameterenv: environment to run the command in.
val call : ?bufsize:int ‑> ?stdin:[ `Gen of string gen | `Str of string ] ‑> ?env:string array ‑> ('a, Buffer.t, unit, string * string * int) Pervasives.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, Buffer.t, unit, string) Pervasives.format4 ‑>'a
A subprocess for interactive usage (read/write channels line by line)
Since: 0.11
val async_call : ?env:string array ‑> ('a, Buffer.t, unit, async_call_result) Pervasives.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:(Pervasives.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.
Parameterflags: 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:(Pervasives.out_channel ‑>'a) ‑>'a
val with_process_out : string ‑> f:(Pervasives.out_channel ‑>'a) ‑>'a
Open a subprocess and obtain a handle to its stdin.
Since: 0.16
type process_full = < stdin : Pervasives.out_channel; stdout : Pervasives.in_channel; stderr : Pervasives.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.
Parameterenv: environment to pass to the subprocess.
Since: 0.16
val with_connection : Unix.sockaddr ‑> f:(Pervasives.in_channel ‑> Pervasives.out_channel ‑>'a) ‑>'a
Wrap Unix.open_connection with a handler.
Since: 0.16
exception ExitServer
val establish_server : Unix.sockaddr ‑> f:(Pervasives.in_channel ‑> Pervasives.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.
Parameterkind: specifies whether the lock is read-only or read-write.
\ No newline at end of file
diff --git a/2.3/containers/CCUtf8_string/.jbuilder-keep b/2.3/containers/CCUtf8_string/.jbuilder-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.3/containers/CCUtf8_string/index.html b/2.3/containers/CCUtf8_string/index.html
new file mode 100644
index 00000000..c11fe15e
--- /dev/null
+++ b/2.3/containers/CCUtf8_string/index.html
@@ -0,0 +1,8 @@
+
+CCUtf8_string (containers.CCUtf8_string)
ModuleCCUtf8_string
Unicode String, in UTF8
A unicode string represented by a utf8 bytestring. This representation
+is convenient for manipulating normal OCaml strings that are encoded
+in UTF8.
We perform only basic decoding and encoding between codepoints and
+bytestrings.
+For more elaborate operations,
+please use the excellent Uutf.
Conversion from a string without validating.
+Upon iteration, if an invalid substring is met, Malformed will be raised.
\ No newline at end of file
diff --git a/2.3/containers/CCVector/.jbuilder-keep b/2.3/containers/CCVector/.jbuilder-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.3/containers/CCVector/index.html b/2.3/containers/CCVector/index.html
new file mode 100644
index 00000000..b3702043
--- /dev/null
+++ b/2.3/containers/CCVector/index.html
@@ -0,0 +1,23 @@
+
+CCVector (containers.CCVector)
ModuleCCVector
Growable, mutable vector
type ro = [
| `RO
]
type rw = [
| `RW
]
Mutability is rw (read-write) or ro (read-only).
type ('a, 'mut) t
The type of a vector of elements of type 'a, with
+a mutability flat 'mut.
Hint to the vector that it should have at least the given capacity.
+Just a hint, will not be enforced if the vector is empty and init
+is not provided.
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].
\ No newline at end of file
diff --git a/2.3/containers/CCWBTree/.jbuilder-keep b/2.3/containers/CCWBTree/.jbuilder-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.3/containers/CCWBTree/Make/argument-1-X/index.html b/2.3/containers/CCWBTree/Make/argument-1-X/index.html
new file mode 100644
index 00000000..b0e4f9af
--- /dev/null
+++ b/2.3/containers/CCWBTree/Make/argument-1-X/index.html
@@ -0,0 +1,2 @@
+
+1-X (containers.CCWBTree.Make.1-X)
\ No newline at end of file
diff --git a/2.3/containers/CCWBTree/Make/index.html b/2.3/containers/CCWBTree/Make/index.html
new file mode 100644
index 00000000..c1eb852a
--- /dev/null
+++ b/2.3/containers/CCWBTree/Make/index.html
@@ -0,0 +1,12 @@
+
+Make (containers.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/2.3/containers/CCWBTree/MakeFull/argument-1-X/index.html b/2.3/containers/CCWBTree/MakeFull/argument-1-X/index.html
new file mode 100644
index 00000000..cdda038b
--- /dev/null
+++ b/2.3/containers/CCWBTree/MakeFull/argument-1-X/index.html
@@ -0,0 +1,2 @@
+
+1-X (containers.CCWBTree.MakeFull.1-X)
\ No newline at end of file
diff --git a/2.3/containers/CCWBTree/MakeFull/index.html b/2.3/containers/CCWBTree/MakeFull/index.html
new file mode 100644
index 00000000..13e49706
--- /dev/null
+++ b/2.3/containers/CCWBTree/MakeFull/index.html
@@ -0,0 +1,12 @@
+
+MakeFull (containers.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/2.3/containers/CCWBTree/index.html b/2.3/containers/CCWBTree/index.html
new file mode 100644
index 00000000..f2f0c20e
--- /dev/null
+++ b/2.3/containers/CCWBTree/index.html
@@ -0,0 +1,2 @@
+
+CCWBTree (containers.CCWBTree)
\ No newline at end of file
diff --git a/2.3/containers/CCWBTree/module-type-KEY/index.html b/2.3/containers/CCWBTree/module-type-KEY/index.html
new file mode 100644
index 00000000..c1a12a93
--- /dev/null
+++ b/2.3/containers/CCWBTree/module-type-KEY/index.html
@@ -0,0 +1,2 @@
+
+KEY (containers.CCWBTree.KEY)
\ No newline at end of file
diff --git a/2.3/containers/CCWBTree/module-type-ORD/index.html b/2.3/containers/CCWBTree/module-type-ORD/index.html
new file mode 100644
index 00000000..b20eedc5
--- /dev/null
+++ b/2.3/containers/CCWBTree/module-type-ORD/index.html
@@ -0,0 +1,2 @@
+
+ORD (containers.CCWBTree.ORD)
\ No newline at end of file
diff --git a/2.3/containers/CCWBTree/module-type-S/index.html b/2.3/containers/CCWBTree/module-type-S/index.html
new file mode 100644
index 00000000..d7176033
--- /dev/null
+++ b/2.3/containers/CCWBTree/module-type-S/index.html
@@ -0,0 +1,12 @@
+
+S (containers.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/2.3/containers/CCZipper/.jbuilder-keep b/2.3/containers/CCZipper/.jbuilder-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.3/containers/CCZipper/index.html b/2.3/containers/CCZipper/index.html
new file mode 100644
index 00000000..c75907a5
--- /dev/null
+++ b/2.3/containers/CCZipper/index.html
@@ -0,0 +1,11 @@
+
+CCZipper (containers.CCZipper)
ModuleCCZipper
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/2.3/containers/Containers/.jbuilder-keep b/2.3/containers/Containers/.jbuilder-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.3/containers/Containers/Hashtbl/Make/index.html b/2.3/containers/Containers/Hashtbl/Make/index.html
new file mode 100644
index 00000000..6a64d417
--- /dev/null
+++ b/2.3/containers/Containers/Hashtbl/Make/index.html
@@ -0,0 +1,2 @@
+
+Make (containers.Containers.Hashtbl.Make)
\ No newline at end of file
diff --git a/2.3/containers/Containers/Hashtbl/MakeSeeded/argument-1-H/index.html b/2.3/containers/Containers/Hashtbl/MakeSeeded/argument-1-H/index.html
new file mode 100644
index 00000000..6ee3e6f7
--- /dev/null
+++ b/2.3/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/2.3/containers/Containers/Hashtbl/MakeSeeded/index.html b/2.3/containers/Containers/Hashtbl/MakeSeeded/index.html
new file mode 100644
index 00000000..2c54f0b7
--- /dev/null
+++ b/2.3/containers/Containers/Hashtbl/MakeSeeded/index.html
@@ -0,0 +1,2 @@
+
+MakeSeeded (containers.Containers.Hashtbl.MakeSeeded)
\ No newline at end of file
diff --git a/2.3/containers/Containers/Hashtbl/index.html b/2.3/containers/Containers/Hashtbl/index.html
new file mode 100644
index 00000000..05fb87b8
--- /dev/null
+++ b/2.3/containers/Containers/Hashtbl/index.html
@@ -0,0 +1,22 @@
+
+Hashtbl (containers.Containers.Hashtbl)
ModuleContainers.Hashtbl
Since: 0.14
include module type of Hashtbl with type Hashtbl.statistics = Hashtbl.statistics and module Hashtbl.Make = Hashtbl.Make and type ('a, 'b) Hashtbl.t = ('a, 'b) Hashtbl.t
keys_list t is the list of keys in t.
+If the key is in the Hashtable multiple times, all occurrences will be returned.
Since: 0.8
val values_list : ('a, 'b) Hashtbl.t ‑>'b list
values_list t is the list of values in t.
Since: 0.8
val map_list : ('a‑>'b‑>'c) ‑> ('a, 'b) Hashtbl.t ‑>'c list
Map on a hashtable's items, collect into a list.
val incr : ?by:int ‑> ('a, int) 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).
Parameterby: if specified, the int value is incremented by by rather than 1.
Since: 0.16
val decr : ?by:int ‑> ('a, int) Hashtbl.t ‑>'a‑> unit
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_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.
Like add_seq_count, but allocates a new table and returns it.
Since: 0.16
val to_list : ('a, 'b) Hashtbl.t ‑> ('a * 'b) list
List of bindings (order unspecified).
val of_list : ('a * 'b) list ‑> ('a, 'b) Hashtbl.t
Build a table from the given list 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) 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) 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.
\ No newline at end of file
diff --git a/2.3/containers/Containers/Hashtbl/module-type-HashedType/index.html b/2.3/containers/Containers/Hashtbl/module-type-HashedType/index.html
new file mode 100644
index 00000000..5ebe8dd7
--- /dev/null
+++ b/2.3/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/2.3/containers/Containers/Hashtbl/module-type-S'/index.html b/2.3/containers/Containers/Hashtbl/module-type-S'/index.html
new file mode 100644
index 00000000..7302c395
--- /dev/null
+++ b/2.3/containers/Containers/Hashtbl/module-type-S'/index.html
@@ -0,0 +1,22 @@
+
+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).
Parameterby: if specified, the int value is incremented by by rather than 1.
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_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.
Build a table from the given list 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.
Printer for tables.
+Renamed from print since 2.0.
Since: 0.13
\ No newline at end of file
diff --git a/2.3/containers/Containers/Hashtbl/module-type-S/index.html b/2.3/containers/Containers/Hashtbl/module-type-S/index.html
new file mode 100644
index 00000000..1fc7cd07
--- /dev/null
+++ b/2.3/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/2.3/containers/Containers/Hashtbl/module-type-SeededHashedType/index.html b/2.3/containers/Containers/Hashtbl/module-type-SeededHashedType/index.html
new file mode 100644
index 00000000..e7c21d46
--- /dev/null
+++ b/2.3/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/2.3/containers/Containers/Hashtbl/module-type-SeededS/index.html b/2.3/containers/Containers/Hashtbl/module-type-SeededS/index.html
new file mode 100644
index 00000000..906f36c0
--- /dev/null
+++ b/2.3/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/2.3/containers/Containers/index.html b/2.3/containers/Containers/index.html
new file mode 100644
index 00000000..f37c609a
--- /dev/null
+++ b/2.3/containers/Containers/index.html
@@ -0,0 +1,2 @@
+
+Containers (containers.Containers)
Shadow unsafe functions and operators from Pervasives
Since: 2.0
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 ]
Deprecated Please use CCEqual.physical or Pervasives.(==) instead.
val (!=) : [ `Consider_using_CCEqual_physical ]
Since: 2.1
Deprecated Please use [not CCEqual.physical] or Pervasives.(!=) instead.
\ No newline at end of file
diff --git a/2.3/containers/Containers_top/.jbuilder-keep b/2.3/containers/Containers_top/.jbuilder-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.3/containers/Containers_top/index.html b/2.3/containers/Containers_top/index.html
new file mode 100644
index 00000000..c08012fe
--- /dev/null
+++ b/2.3/containers/Containers_top/index.html
@@ -0,0 +1,2 @@
+
+Containers_top (containers.Containers_top)
ModuleContainers_top
type 'a printer = 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/2.3/containers/index.html b/2.3/containers/index.html
new file mode 100644
index 00000000..a0e35067
--- /dev/null
+++ b/2.3/containers/index.html
@@ -0,0 +1,20 @@
+
+index (containers.index)
Library containers
+This library exposes the following toplevel modules:
+