\ No newline at end of file
diff --git a/2.8/containers/CCArray/index.html b/2.8/containers/CCArray/index.html
new file mode 100644
index 00000000..4e79dbc4
--- /dev/null
+++ b/2.8/containers/CCArray/index.html
@@ -0,0 +1,2 @@
+
+CCArray (containers.CCArray)
Module CCArray
Array utils
type 'a sequence = ('a-> unit) -> unit
deprecated
use 'a iter instead
type 'a iter = ('a-> unit) -> unit
Fast internal iterator.
since
2.8
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 = Stdlib.Random.State.t ->'a
type 'a printer = Stdlib.Format.formatter ->'a-> unit
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.
val sort_indices : ('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 : ('a->'a-> int) ->'at-> int array
sort_ranking f a returns a new array b, with the same length as a, such that b.(i) is the index at which the i-th element of a appears in sorted f a. a is not modified.
In other words, map (fun i -> (sorted f a).(i)) (sort_ranking f a) = a. sort_ranking yields the inverse permutation of sort_indices.
In the absence of duplicate elements in a, we also have lookup_exn a.(i) (sorted a) = (sorted_ranking a).(i).
lookup ~cmp key a lookups the index of some key key in a sorted array a. Undefined behavior if the array a is not sorted wrt ~cmp. Complexity: O(log (n)) (dichotomic search).
returns
None if the key key is not present, or Some i (i the index of the key) otherwise.
val bsearch : cmp:('a->'a-> int) ->'a->'at-> [ `All_lower | `All_bigger | `Just_after of int | `Empty | `At of int ]
bsearch ~cmp key a finds the index of the object key in the array a, provided a is sorted using ~cmp. If the array is not sorted, the result is not specified (may raise Invalid_argument).
Complexity: O(log n) where n is the length of the array a (dichotomic search).
returns
`At i if cmp a.(i) key = 0 (for some i).
`All_lower if all elements of a are lower than key.
`All_bigger if all elements of a are bigger than key.
for_all2 f [|a1; ...; an|] [|b1; ...; bn|] is true if each pair of elements ai bi satisfies the predicate f. That is, it returns (f a1 b1) && (f a2 b2) && ... && (f an bn).
raises Invalid_argument
if arrays have distinct lengths. Allow different types.
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).
raises Invalid_argument
if arrays have distinct lengths. Allow different types.
since
0.20
val fold2 : ('acc->'a->'b->'acc) ->'acc->'at->'bt->'acc
fold2 f init a b fold on two arrays a and b stepwise. It computes f (... (f init a1 b1)...) an bn.
shuffle a randomly shuffles the array a, in place.
val shuffle_with : Stdlib.Random.State.t ->'at-> unit
shuffle_with rs a randomly shuffles the array a (like shuffle) but a specialized random state rs is used to control the random numbers being produced during shuffling (for reproducibility).
to_iter a returns an iter of the elements of an array a. The input array a is shared with the sequence and modification of it will result in modification of the iterator.
to_std_seq a returns a Seq.t of the elements of an array a. The input array a is shared with the sequence and modification of it will result in modification of the sequence.
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 ", ").
map2 f a b applies function f to all elements of a and b, and builds an array with the results returned by f: [| f a.(0) b.(0); ...; f a.(length a - 1) b.(length b - 1)|].
filter_map f [|a1; ...; an|] calls (f a1) ... (f an) and returns an array b consisting of all elements bi such as f ai = Some bi. When f returns None, the corresponding element of a is discarded.
\ No newline at end of file
diff --git a/2.8/containers/CCArray/module-type-MONO_ARRAY/index.html b/2.8/containers/CCArray/module-type-MONO_ARRAY/index.html
new file mode 100644
index 00000000..db179785
--- /dev/null
+++ b/2.8/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.8/containers/CCArrayLabels/.dune-keep b/2.8/containers/CCArrayLabels/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCArrayLabels/Floatarray/index.html b/2.8/containers/CCArrayLabels/Floatarray/index.html
new file mode 100644
index 00000000..57d1f229
--- /dev/null
+++ b/2.8/containers/CCArrayLabels/Floatarray/index.html
@@ -0,0 +1,2 @@
+
+Floatarray (containers.CCArrayLabels.Floatarray)
Module CCArrayLabels.Floatarray
val create : int -> floatarray
val length : floatarray -> int
val get : floatarray -> int -> float
val set : floatarray -> int -> float -> unit
val unsafe_get : floatarray -> int -> float
val unsafe_set : floatarray -> int -> float -> unit
\ No newline at end of file
diff --git a/2.8/containers/CCArrayLabels/Infix/index.html b/2.8/containers/CCArrayLabels/Infix/index.html
new file mode 100644
index 00000000..74b12317
--- /dev/null
+++ b/2.8/containers/CCArrayLabels/Infix/index.html
@@ -0,0 +1,2 @@
+
+Infix (containers.CCArrayLabels.Infix)
\ No newline at end of file
diff --git a/2.8/containers/CCArrayLabels/index.html b/2.8/containers/CCArrayLabels/index.html
new file mode 100644
index 00000000..04d4fccf
--- /dev/null
+++ b/2.8/containers/CCArrayLabels/index.html
@@ -0,0 +1,2 @@
+
+CCArrayLabels (containers.CCArrayLabels)
Module CCArrayLabels
Array utils
type 'a sequence = ('a-> unit) -> unit
deprecated
use 'a iter instead
type 'a iter = ('a-> unit) -> unit
Fast internal iterator.
since
2.8
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 = Stdlib.Random.State.t ->'a
type 'a printer = Stdlib.Format.formatter ->'a-> unit
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).
returns
None if the key ~key is not present, or Some i (i the index of the key) otherwise.
val bsearch : cmp:('a->'a-> int) -> key:'a->'at-> [ `All_lower | `All_bigger | `Just_after of int | `Empty | `At of int ]
bsearch ~cmp ~key a finds the index of the object ~key in the array a, provided a is sorted using ~cmp. If the array is not sorted, the result is not specified (may raise Invalid_argument).
Complexity: O(log n) where n is the length of the array a (dichotomic search).
returns
`At i if cmp a.(i) key = 0 (for some i).
`All_lower if all elements of a are lower than key.
`All_bigger if all elements of a are bigger than key.
for_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).
raises Invalid_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).
raises Invalid_argument
if arrays have distinct lengths. Allow different types.
since
0.20
val fold2 : f:('acc->'a->'b->'acc) -> init:'acc->'at->'bt->'acc
fold2 ~f ~init a b fold on two arrays a and b stepwise. It computes ~f (... (~f ~init a1 b1)...) an bn.
shuffle a randomly shuffles the array a, in place.
val shuffle_with : Stdlib.Random.State.t ->'at-> unit
shuffle_with rs a randomly shuffles the array a (like shuffle) but a specialized random state rs is used to control the random numbers being produced during shuffling (for reproducibility).
to_iter a returns an iter of the elements of an array a. The input array a is shared with the sequence and modification of it will result in modification of the iterator.
to_std_seq a returns a Seq.t of the elements of an array a. The input array a is shared with the sequence and modification of it will result in modification of the sequence.
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)|].
filter_map ~f [|a1; ...; an|] calls (~f a1) ... (~f an) and returns an array b consisting of all elements bi such as ~f ai = Some bi. When ~f returns None, the corresponding element of a is discarded.
val monoid_product : f:('a->'b->'c) ->'at->'bt->'ct
All combinaisons of tuples from the two arrays are passed to the function
\ No newline at end of file
diff --git a/2.8/containers/CCArrayLabels/module-type-MONO_ARRAY/index.html b/2.8/containers/CCArrayLabels/module-type-MONO_ARRAY/index.html
new file mode 100644
index 00000000..c781e7c7
--- /dev/null
+++ b/2.8/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.8/containers/CCArray_slice/.dune-keep b/2.8/containers/CCArray_slice/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCArray_slice/index.html b/2.8/containers/CCArray_slice/index.html
new file mode 100644
index 00000000..f0682934
--- /dev/null
+++ b/2.8/containers/CCArray_slice/index.html
@@ -0,0 +1,2 @@
+
+CCArray_slice (containers.CCArray_slice)
Module CCArray_slice
Array Slice
type 'a sequence = ('a-> unit) -> unit
deprecated
use 'a iter instead
type 'a iter = ('a-> unit) -> unit
Fast internal iterator.
since
2.8
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 = Stdlib.Random.State.t ->'a
type 'a printer = Stdlib.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.
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).
raises Invalid_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).
raises Invalid_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.
shuffle as randomly shuffles the slice as, in place.
val shuffle_with : Stdlib.Random.State.t ->'at-> unit
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_iter a returns an iter of the elements of a slice a. The input array a is shared with the sequence and modification of it will result in modification of the iterator.
to_std_seq a returns a Seq.t of the elements of a slice 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 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.8/containers/CCArray_sliceLabels/.dune-keep b/2.8/containers/CCArray_sliceLabels/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCArray_sliceLabels/index.html b/2.8/containers/CCArray_sliceLabels/index.html
new file mode 100644
index 00000000..8003ae7e
--- /dev/null
+++ b/2.8/containers/CCArray_sliceLabels/index.html
@@ -0,0 +1,2 @@
+
+CCArray_sliceLabels (containers.CCArray_sliceLabels)
Module CCArray_sliceLabels
Array Slice
type 'a sequence = ('a-> unit) -> unit
deprecated
use 'a iter instead
type 'a iter = ('a-> unit) -> unit
Fast internal iterator.
since
2.8
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 = Stdlib.Random.State.t ->'a
type 'a printer = Stdlib.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.
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).
raises Invalid_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).
raises Invalid_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.
shuffle as randomly shuffles the slice as, in place.
val shuffle_with : Stdlib.Random.State.t ->'at-> unit
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_iter a returns an iter of the elements of a slice a. The input array a is shared with the sequence and modification of it will result in modification of the iterator.
to_std_seq a returns a Seq.t of the elements of a slice 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 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.8/containers/CCBV/.dune-keep b/2.8/containers/CCBV/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCBV/index.html b/2.8/containers/CCBV/index.html
new file mode 100644
index 00000000..6bda2128
--- /dev/null
+++ b/2.8/containers/CCBV/index.html
@@ -0,0 +1,2 @@
+
+CCBV (containers.CCBV)
Module CCBV
Imperative Bitvectors
BREAKING CHANGES since 1.2: size is now stored along with the bitvector. Some functions have a new signature.
The size of the bitvector used to be rounded up to the multiple of 30 or 62. In other words some functions such as iter would iterate on more bits than what was originally asked for. This is not the case anymore.
select arr bv selects the elements of arr whose index corresponds to a true bit in bv. If bv is too short, elements of arr with too high an index cannot be selected and are therefore not selected.
\ No newline at end of file
diff --git a/2.8/containers/CCBijection/.dune-keep b/2.8/containers/CCBijection/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCBijection/Make/argument-1-L/index.html b/2.8/containers/CCBijection/Make/argument-1-L/index.html
new file mode 100644
index 00000000..0a8e65b4
--- /dev/null
+++ b/2.8/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.8/containers/CCBijection/Make/argument-2-R/index.html b/2.8/containers/CCBijection/Make/argument-2-R/index.html
new file mode 100644
index 00000000..ccda3172
--- /dev/null
+++ b/2.8/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.8/containers/CCBijection/Make/index.html b/2.8/containers/CCBijection/Make/index.html
new file mode 100644
index 00000000..a5edf321
--- /dev/null
+++ b/2.8/containers/CCBijection/Make/index.html
@@ -0,0 +1,2 @@
+
+Make (containers.CCBijection.Make)
\ No newline at end of file
diff --git a/2.8/containers/CCBijection/index.html b/2.8/containers/CCBijection/index.html
new file mode 100644
index 00000000..1102451b
--- /dev/null
+++ b/2.8/containers/CCBijection/index.html
@@ -0,0 +1,2 @@
+
+CCBijection (containers.CCBijection)
Module CCBijection
Bijection
Represents 1-to-1 mappings between two types. Each element from the "left" is mapped to one "right" value, and conversely.
\ No newline at end of file
diff --git a/2.8/containers/CCBijection/module-type-OrderedType/index.html b/2.8/containers/CCBijection/module-type-OrderedType/index.html
new file mode 100644
index 00000000..ba7313a1
--- /dev/null
+++ b/2.8/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.8/containers/CCBijection/module-type-S/index.html b/2.8/containers/CCBijection/module-type-S/index.html
new file mode 100644
index 00000000..441ce427
--- /dev/null
+++ b/2.8/containers/CCBijection/module-type-S/index.html
@@ -0,0 +1,2 @@
+
+S (containers.CCBijection.S)
\ No newline at end of file
diff --git a/2.8/containers/CCBitField/.dune-keep b/2.8/containers/CCBitField/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCBitField/Make/argument-1-X/index.html b/2.8/containers/CCBitField/Make/argument-1-X/index.html
new file mode 100644
index 00000000..9fbd6626
--- /dev/null
+++ b/2.8/containers/CCBitField/Make/argument-1-X/index.html
@@ -0,0 +1,2 @@
+
+1-X (containers.CCBitField.Make.1-X)
Parameter Make.1-X
\ No newline at end of file
diff --git a/2.8/containers/CCBitField/Make/index.html b/2.8/containers/CCBitField/Make/index.html
new file mode 100644
index 00000000..cc24f9b6
--- /dev/null
+++ b/2.8/containers/CCBitField/Make/index.html
@@ -0,0 +1,2 @@
+
+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.8/containers/CCBitField/index.html b/2.8/containers/CCBitField/index.html
new file mode 100644
index 00000000..cb3afd57
--- /dev/null
+++ b/2.8/containers/CCBitField/index.html
@@ -0,0 +1,12 @@
+
+CCBitField (containers.CCBitField)
Module CCBitField
Bit Field
This module defines efficient bitfields up to 30 or 62 bits (depending on the architecture) in a relatively type-safe way.
module B = CCBitField.Make(struct end);;
+
+let x = B.mk_field ()
+let y = B.mk_field ()
+let z = B.mk_field ()
+
+let f = B.empty |> B.set x true |> B.set y true;;
+
+assert (not (B.get z f)) ;;
+
+assert (f |> B.set z true |> B.get z);;
exceptionTooManyFields
Raised when too many fields are packed into one bitfield.
exceptionFrozen
Raised when a frozen bitfield is modified.
val max_width : int
System-dependent maximum width for a bitfield, typically 30 or 62.
\ No newline at end of file
diff --git a/2.8/containers/CCBitField/module-type-S/index.html b/2.8/containers/CCBitField/module-type-S/index.html
new file mode 100644
index 00000000..96e62b51
--- /dev/null
+++ b/2.8/containers/CCBitField/module-type-S/index.html
@@ -0,0 +1,2 @@
+
+S (containers.CCBitField.S)
Module type CCBitField.S
Bitfield Signature
type t = private int
Generative type of bitfields. Each instantiation of the functor should create a new, incompatible type
Prevent new fields from being added. From now on, creating a field will raise Frozen.
val total_width : unit -> int
Current width of the bitfield.
\ No newline at end of file
diff --git a/2.8/containers/CCBlockingQueue/.dune-keep b/2.8/containers/CCBlockingQueue/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCBlockingQueue/index.html b/2.8/containers/CCBlockingQueue/index.html
new file mode 100644
index 00000000..dab1de94
--- /dev/null
+++ b/2.8/containers/CCBlockingQueue/index.html
@@ -0,0 +1,2 @@
+
+CCBlockingQueue (containers.CCBlockingQueue)
Module CCBlockingQueue
Blocking Queue
This queue has a limited size. Pushing a value on the queue when it is full will block.
Create a new queue of size n. Using n=max_int amounts to using an infinite queue (2^61 items is a lot to fit in memory); using n=1 amounts to using a box with 0 or 1 elements inside.
\ No newline at end of file
diff --git a/2.8/containers/CCBool/.dune-keep b/2.8/containers/CCBool/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCBool/index.html b/2.8/containers/CCBool/index.html
new file mode 100644
index 00000000..4f5be55a
--- /dev/null
+++ b/2.8/containers/CCBool/index.html
@@ -0,0 +1,2 @@
+
+CCBool (containers.CCBool)
\ No newline at end of file
diff --git a/2.8/containers/CCCache/.dune-keep b/2.8/containers/CCCache/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCCache/index.html b/2.8/containers/CCCache/index.html
new file mode 100644
index 00000000..2bf94c5c
--- /dev/null
+++ b/2.8/containers/CCCache/index.html
@@ -0,0 +1,15 @@
+
+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.
with_cache_rec c f is a function that first, applies f to some f' = fix f, such that recursive calls to f' are cached in c. It is similar to with_cache but with a function that takes as first argument its own recursive version. Example (memoized Fibonacci function):
let fib = with_cache_rec (lru 256)
+ (fun fib' n -> match n with
+ | 1 | 2 -> 1
+ | _ -> fib' (n-1) + fib' (n-2)
+ );;
+
+fib 70;;
Linear cache with the given size. It stores key/value pairs in an array and does linear search at every call, so it should only be used with small size.
parameter eq
optional equality predicate for keys.
val replacing : eq:'aequal-> ?hash:'ahash-> int -> ('a, 'b) t
Replacing cache of the given size. Equality and hash functions can be parametrized. It's a hash table that handles collisions by replacing the old value with the new (so a cache entry is evicted when another entry with the same hash (modulo size) is added). Never grows wider than the given size.
val lru : eq:'aequal-> ?hash:'ahash-> int -> ('a, 'b) t
LRU cache of the given size ("Least Recently Used": keys that have not been used recently are deleted first). Never grows wider than the given size.
val unbounded : eq:'aequal-> ?hash:'ahash-> int -> ('a, 'b) t
Unbounded cache, backed by a Hash table. Will grow forever unless clear is called manually.
\ No newline at end of file
diff --git a/2.8/containers/CCChar/.dune-keep b/2.8/containers/CCChar/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCChar/index.html b/2.8/containers/CCChar/index.html
new file mode 100644
index 00000000..7991fd7a
--- /dev/null
+++ b/2.8/containers/CCChar/index.html
@@ -0,0 +1,2 @@
+
+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.8/containers/CCDeque/.dune-keep b/2.8/containers/CCDeque/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCDeque/index.html b/2.8/containers/CCDeque/index.html
new file mode 100644
index 00000000..a1efb0dd
--- /dev/null
+++ b/2.8/containers/CCDeque/index.html
@@ -0,0 +1,2 @@
+
+CCDeque (containers.CCDeque)
Module CCDeque
Imperative deque
This structure provides fast access to its front and back elements, with O(1) operations.
Update last value. If the deque is empty do nothing. If the function returns None, remove last element; if it returns Some x, replace last element with x.
\ No newline at end of file
diff --git a/2.8/containers/CCEqual/.dune-keep b/2.8/containers/CCEqual/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCEqual/Infix/index.html b/2.8/containers/CCEqual/Infix/index.html
new file mode 100644
index 00000000..e27f133e
--- /dev/null
+++ b/2.8/containers/CCEqual/Infix/index.html
@@ -0,0 +1,2 @@
+
+Infix (containers.CCEqual.Infix)
\ No newline at end of file
diff --git a/2.8/containers/CCEqual/index.html b/2.8/containers/CCEqual/index.html
new file mode 100644
index 00000000..2f48a084
--- /dev/null
+++ b/2.8/containers/CCEqual/index.html
@@ -0,0 +1,2 @@
+
+CCEqual (containers.CCEqual)
Module CCEqual
Equality Combinators
type 'a t = 'a->'a-> bool
Equality function. Must be transitive, symmetric, and reflexive.
map f eq is the equality function that, given objects x and y, projects x and y using f (e.g. using a record field) and then compares those projections with eq. Example: map fst int compares values of type (int * 'a) by their first component.
\ No newline at end of file
diff --git a/2.8/containers/CCEqualLabels/.dune-keep b/2.8/containers/CCEqualLabels/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCEqualLabels/Infix/index.html b/2.8/containers/CCEqualLabels/Infix/index.html
new file mode 100644
index 00000000..15208d07
--- /dev/null
+++ b/2.8/containers/CCEqualLabels/Infix/index.html
@@ -0,0 +1,2 @@
+
+Infix (containers.CCEqualLabels.Infix)
\ No newline at end of file
diff --git a/2.8/containers/CCEqualLabels/index.html b/2.8/containers/CCEqualLabels/index.html
new file mode 100644
index 00000000..2f1a7d56
--- /dev/null
+++ b/2.8/containers/CCEqualLabels/index.html
@@ -0,0 +1,2 @@
+
+CCEqualLabels (containers.CCEqualLabels)
Module CCEqualLabels
Equality Combinators
type 'a t = 'a->'a-> bool
Equality function. Must be transitive, symmetric, and reflexive.
map f eq is the equality function that, given objects x and y, projects x and y using f (e.g. using a record field) and then compares those projections with eq. Example: map fst int compares values of type (int * 'a) by their first component.
\ No newline at end of file
diff --git a/2.8/containers/CCFQueue/.dune-keep b/2.8/containers/CCFQueue/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCFQueue/index.html b/2.8/containers/CCFQueue/index.html
new file mode 100644
index 00000000..ff91de65
--- /dev/null
+++ b/2.8/containers/CCFQueue/index.html
@@ -0,0 +1,2 @@
+
+CCFQueue (containers.CCFQueue)
Module CCFQueue
Functional queues
type 'a sequence = ('a-> unit) -> unit
type 'a klist = unit -> [ `Nil | `Cons of 'a * 'aklist ]
type 'a equal = 'a->'a-> bool
type 'a printer = Stdlib.Format.formatter ->'a-> unit
take_back_l n q removes and returns the last n elements of q. The elements are in the order of the queue, that is, the head of the returned list is the first element to appear via take_front. take_back_l 2 (of_list [1;2;3;4]) = of_list [1;2], [3;4].
raises Invalid_argument
if n<0.
val take_back_while : ('a-> bool) ->'at->'at * 'a list
\ No newline at end of file
diff --git a/2.8/containers/CCFloat/.dune-keep b/2.8/containers/CCFloat/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCFloat/Infix/index.html b/2.8/containers/CCFloat/Infix/index.html
new file mode 100644
index 00000000..919c3ba1
--- /dev/null
+++ b/2.8/containers/CCFloat/Infix/index.html
@@ -0,0 +1,2 @@
+
+Infix (containers.CCFloat.Infix)
\ No newline at end of file
diff --git a/2.8/containers/CCFloat/index.html b/2.8/containers/CCFloat/index.html
new file mode 100644
index 00000000..61df5ca3
--- /dev/null
+++ b/2.8/containers/CCFloat/index.html
@@ -0,0 +1,2 @@
+
+CCFloat (containers.CCFloat)
\ No newline at end of file
diff --git a/2.8/containers/CCFormat/.dune-keep b/2.8/containers/CCFormat/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCFormat/Dump/index.html b/2.8/containers/CCFormat/Dump/index.html
new file mode 100644
index 00000000..6100815b
--- /dev/null
+++ b/2.8/containers/CCFormat/Dump/index.html
@@ -0,0 +1,2 @@
+
+Dump (containers.CCFormat.Dump)
\ No newline at end of file
diff --git a/2.8/containers/CCFormat/index.html b/2.8/containers/CCFormat/index.html
new file mode 100644
index 00000000..b27ae718
--- /dev/null
+++ b/2.8/containers/CCFormat/index.html
@@ -0,0 +1,14 @@
+
+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 : Stdlib.out_channel -> (t->'a) ->'a
with_out_chan oc f turns oc into a formatter fmt, and call f fmt. Behaves like f fmt from then on, but whether the call to f fails or returns, fmt is flushed before the call terminates.
\ No newline at end of file
diff --git a/2.8/containers/CCFun/.dune-keep b/2.8/containers/CCFun/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCFun/Monad/argument-1-X/index.html b/2.8/containers/CCFun/Monad/argument-1-X/index.html
new file mode 100644
index 00000000..815b1ee1
--- /dev/null
+++ b/2.8/containers/CCFun/Monad/argument-1-X/index.html
@@ -0,0 +1,2 @@
+
+1-X (containers.CCFun.Monad.1-X)
Parameter Monad.1-X
type t
\ No newline at end of file
diff --git a/2.8/containers/CCFun/Monad/index.html b/2.8/containers/CCFun/Monad/index.html
new file mode 100644
index 00000000..adfaf985
--- /dev/null
+++ b/2.8/containers/CCFun/Monad/index.html
@@ -0,0 +1,2 @@
+
+Monad (containers.CCFun.Monad)
\ No newline at end of file
diff --git a/2.8/containers/CCFun/index.html b/2.8/containers/CCFun/index.html
new file mode 100644
index 00000000..f53592b7
--- /dev/null
+++ b/2.8/containers/CCFun/index.html
@@ -0,0 +1,4 @@
+
+CCFun (containers.CCFun)
val protect : finally:(unit -> unit) -> (unit ->'a) ->'a
exceptionFinally_raisedof exn
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 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. If h () raises an exception, then this exception will be passed on and any exception that may have been raised by f () is lost.
val finally1 : h:(unit ->_) -> ('a->'b) ->'a->'b
finally1 ~h f x is the same as f x, but after the computation, h () is called whether f x rose an exception or not. If h () raises an exception, then this exception will be passed on and any exception that may have been raised by f () is lost.
since
0.16
val finally2 : h:(unit ->_) -> ('a->'b->'c) ->'a->'b->'c
finally2 ~h f x y is the same as f x y, but after the computation, h () is called whether f x y rose an exception or not. If h () raises an exception, then this exception will be passed on and any exception that may have been raised by f () is lost.
since
0.16
val opaque_identity : 'a->'a
opaque_identity x is like x, but prevents Flambda from using x's definition for optimizing it. (flambda is an optimization/inlining pass in OCaml >= 4.03).
since
0.18
val iterate : int -> ('a->'a) ->'a->'a
iterate n f is f iterated n times. That is to say, iterate 0 f x is x, iterate 1 f x is f x, iterate 2 f x is f (f x), etc.
since
2.1
Monad
Functions with a fixed domain are monads in their codomain.
moduleMonad : functor (X : sig ... end) ->sig ... end
\ No newline at end of file
diff --git a/2.8/containers/CCFun_vec/.dune-keep b/2.8/containers/CCFun_vec/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCFun_vec/index.html b/2.8/containers/CCFun_vec/index.html
new file mode 100644
index 00000000..33810d7f
--- /dev/null
+++ b/2.8/containers/CCFun_vec/index.html
@@ -0,0 +1,2 @@
+
+CCFun_vec (containers.CCFun_vec)
Module CCFun_vec
Functional Vectors
type 'a sequence = ('a-> unit) -> unit
type 'a gen = unit ->'a option
type 'a printer = Stdlib.Format.formatter ->'a-> unit
type 'a ktree = unit -> [ `Nil | `Node of 'a * 'aktree list ]
\ No newline at end of file
diff --git a/2.8/containers/CCGraph/.dune-keep b/2.8/containers/CCGraph/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCGraph/Dot/index.html b/2.8/containers/CCGraph/Dot/index.html
new file mode 100644
index 00000000..87e9b7ac
--- /dev/null
+++ b/2.8/containers/CCGraph/Dot/index.html
@@ -0,0 +1,2 @@
+
+Dot (containers.CCGraph.Dot)
val with_out : string -> (Stdlib.Format.formatter ->'a) ->'a
Shortcut to open a file and write to it.
\ No newline at end of file
diff --git a/2.8/containers/CCGraph/Iter/index.html b/2.8/containers/CCGraph/Iter/index.html
new file mode 100644
index 00000000..05783e33
--- /dev/null
+++ b/2.8/containers/CCGraph/Iter/index.html
@@ -0,0 +1,2 @@
+
+Iter (containers.CCGraph.Iter)
\ No newline at end of file
diff --git a/2.8/containers/CCGraph/Lazy_tree/index.html b/2.8/containers/CCGraph/Lazy_tree/index.html
new file mode 100644
index 00000000..9754d6c2
--- /dev/null
+++ b/2.8/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.8/containers/CCGraph/Map/index.html b/2.8/containers/CCGraph/Map/index.html
new file mode 100644
index 00000000..4b35762e
--- /dev/null
+++ b/2.8/containers/CCGraph/Map/index.html
@@ -0,0 +1,2 @@
+
+Map (containers.CCGraph.Map)
\ No newline at end of file
diff --git a/2.8/containers/CCGraph/Traverse/Event/index.html b/2.8/containers/CCGraph/Traverse/Event/index.html
new file mode 100644
index 00000000..7aa796f6
--- /dev/null
+++ b/2.8/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.8/containers/CCGraph/Traverse/index.html b/2.8/containers/CCGraph/Traverse/index.html
new file mode 100644
index 00000000..6ab96284
--- /dev/null
+++ b/2.8/containers/CCGraph/Traverse/index.html
@@ -0,0 +1,2 @@
+
+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->'viter-> ('v * int * ('v, 'e) path) iter_once
Dijkstra algorithm, traverses a graph in increasing distance order. Yields each vertex paired with its distance to the set of initial vertices (the smallest distance needed to reach the node from the initial vertices).
parameter dist
distance from origin of the edge to destination, must be strictly positive. Default is 1 for every edge.
val dijkstra_tag : ?dist:('e-> int) -> tags:'vtag_set-> graph:('v, 'e) t->'viter-> ('v * int * ('v, 'e) path) iter_once
\ No newline at end of file
diff --git a/2.8/containers/CCGraph/index.html b/2.8/containers/CCGraph/index.html
new file mode 100644
index 00000000..11a3ddb6
--- /dev/null
+++ b/2.8/containers/CCGraph/index.html
@@ -0,0 +1,7 @@
+
+CCGraph (containers.CCGraph)
Module CCGraph
Simple Graph Interface
A collections of algorithms on (mostly read-only) graph structures. The user provides her own graph structure as a ('v, 'e) CCGraph.t, where 'v is the type of vertices and 'e the type of edges (for instance, 'e = ('v * 'v) is perfectly fine in many cases).
Such a ('v, 'e) CCGraph.t structure is a record containing three functions: two relate edges to their origin and destination, and one maps vertices to their outgoing edges. This abstract notion of graph makes it possible to run the algorithms on any user-specific type that happens to have a graph structure.
Many graph algorithms here take an iterator of vertices as input. The helper module Iter contains basic functions for that, as does the iter library on opam. If the user only has a single vertex (e.g., for a topological sort from a given vertex), they can use Iter.return x to build a iter of one element.
is_dag ~graph vs returns true if the subset of graph reachable from vs is acyclic.
since
0.18
Topological Sort
exceptionHas_cycle
val topo_sort : eq:('v->'v-> bool) -> ?rev:bool -> tbl:'vset-> graph:('v, 'e) t->'viter->'v list
topo_sort ~graph seq returns a list of vertices l where each element of l is reachable from seq. The list is sorted in a way such that if v -> v' in the graph, then v comes before v' in the list (i.e. has a smaller index). Basically v -> v' means that v is smaller than v'. See wikipedia.
parameter eq
equality predicate on vertices (default (=)).
parameter rev
if true, the dependency relation is inverted (v -> v' means v' occurs before v).
raises Has_cycle
if the graph is not a DAG.
val topo_sort_tag : eq:('v->'v-> bool) -> ?rev:bool -> tags:'vtag_set-> graph:('v, 'e) t->'viter->'v list
Strongly connected components reachable from the given vertices. Each component is a list of vertices that are all mutually reachable in the graph. The components are explored in a topological order (if C1 and C2 are components, and C1 points to C2, then C2 will be yielded before C1). Uses Tarjan's algorithm.
parameter tbl
table used to map nodes to some hidden state.
raises Iter_once
if the result is iterated on more than once.
Pretty printing in the DOT (graphviz) format
Example (print divisors from 42):
let open CCGraph in
+let open Dot in
+with_out "/tmp/truc.dot"
+ (fun out ->
+ pp ~attrs_v:(fun i -> [`Label (string_of_int i)]) ~graph:divisors_graph out 42
+ )
val mk_mut_tbl : eq:('v->'v-> bool) -> ?hash:('v-> int) -> int -> ('v, 'a) mut_graph
Make a new mutable graph from a Hashtbl. Edges are labelled with type 'a.
Immutable Graph
A classic implementation of a graph structure on totally ordered vertices, with unlabelled edges. The graph allows to add and remove edges and vertices, and to iterate on edges and vertices.
\ No newline at end of file
diff --git a/2.8/containers/CCGraph/module-type-MAP/index.html b/2.8/containers/CCGraph/module-type-MAP/index.html
new file mode 100644
index 00000000..d916cc5f
--- /dev/null
+++ b/2.8/containers/CCGraph/module-type-MAP/index.html
@@ -0,0 +1,2 @@
+
+MAP (containers.CCGraph.MAP)
\ No newline at end of file
diff --git a/2.8/containers/CCHash/.dune-keep b/2.8/containers/CCHash/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCHash/index.html b/2.8/containers/CCHash/index.html
new file mode 100644
index 00000000..ad4090c2
--- /dev/null
+++ b/2.8/containers/CCHash/index.html
@@ -0,0 +1,2 @@
+
+CCHash (containers.CCHash)
Always return 0. Useful for ignoring elements. Example: Hash.(pair string const0) will map pairs ("a", 1) and ("a", 2) to the same hash, but not the same as ("b", 1).
\ No newline at end of file
diff --git a/2.8/containers/CCHashSet/.dune-keep b/2.8/containers/CCHashSet/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCHashSet/Make/argument-1-E/index.html b/2.8/containers/CCHashSet/Make/argument-1-E/index.html
new file mode 100644
index 00000000..399e58cb
--- /dev/null
+++ b/2.8/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.8/containers/CCHashSet/Make/index.html b/2.8/containers/CCHashSet/Make/index.html
new file mode 100644
index 00000000..935027c4
--- /dev/null
+++ b/2.8/containers/CCHashSet/Make/index.html
@@ -0,0 +1,2 @@
+
+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.8/containers/CCHashSet/index.html b/2.8/containers/CCHashSet/index.html
new file mode 100644
index 00000000..39c472ef
--- /dev/null
+++ b/2.8/containers/CCHashSet/index.html
@@ -0,0 +1,2 @@
+
+CCHashSet (containers.CCHashSet)
Module CCHashSet
Mutable Set
status: unstable
since
0.13
type 'a sequence = ('a-> unit) -> unit
type 'a printer = Stdlib.Format.formatter ->'a-> unit
\ No newline at end of file
diff --git a/2.8/containers/CCHashSet/module-type-ELEMENT/index.html b/2.8/containers/CCHashSet/module-type-ELEMENT/index.html
new file mode 100644
index 00000000..bf5274c3
--- /dev/null
+++ b/2.8/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.8/containers/CCHashSet/module-type-S/index.html b/2.8/containers/CCHashSet/module-type-S/index.html
new file mode 100644
index 00000000..2fa5c6b5
--- /dev/null
+++ b/2.8/containers/CCHashSet/module-type-S/index.html
@@ -0,0 +1,2 @@
+
+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.8/containers/CCHashTrie/.dune-keep b/2.8/containers/CCHashTrie/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCHashTrie/Make/argument-1-K/index.html b/2.8/containers/CCHashTrie/Make/argument-1-K/index.html
new file mode 100644
index 00000000..2dc0f5d7
--- /dev/null
+++ b/2.8/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.8/containers/CCHashTrie/Make/index.html b/2.8/containers/CCHashTrie/Make/index.html
new file mode 100644
index 00000000..ae313cce
--- /dev/null
+++ b/2.8/containers/CCHashTrie/Make/index.html
@@ -0,0 +1,2 @@
+
+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.8/containers/CCHashTrie/Transient/index.html b/2.8/containers/CCHashTrie/Transient/index.html
new file mode 100644
index 00000000..56323783
--- /dev/null
+++ b/2.8/containers/CCHashTrie/Transient/index.html
@@ -0,0 +1,2 @@
+
+Transient (containers.CCHashTrie.Transient)
Module CCHashTrie.Transient
Transient Identifiers
type t
Identifiers for transient modifications. A transient modification is uniquely identified by a Transient.t. Once Transient.freeze r is called, r cannot be used to modify the structure again.
with_ f creates a transient ID i, calls f i, freezes the ID i and returns the result of f i.
exceptionFrozen
Raised when a frozen ID is used.
\ No newline at end of file
diff --git a/2.8/containers/CCHashTrie/index.html b/2.8/containers/CCHashTrie/index.html
new file mode 100644
index 00000000..ef017529
--- /dev/null
+++ b/2.8/containers/CCHashTrie/index.html
@@ -0,0 +1,2 @@
+
+CCHashTrie (containers.CCHashTrie)
Module CCHashTrie
Hash Tries
Trie indexed by the hash of the keys, where the branching factor is fixed. The goal is to have a quite efficient functional structure with fast update and access if the hash function is good. The trie is not binary, to improve cache locality and decrease depth.
Preliminary benchmarks (see the "tbl" section of benchmarks) tend to show that this type is quite efficient for small data sets.
status: unstable
since
0.13
type 'a sequence = ('a-> unit) -> unit
type 'a gen = unit ->'a option
type 'a printer = Stdlib.Format.formatter ->'a-> unit
type 'a ktree = unit -> [ `Nil | `Node of 'a * 'aktree list ]
\ No newline at end of file
diff --git a/2.8/containers/CCHashTrie/module-type-KEY/index.html b/2.8/containers/CCHashTrie/module-type-KEY/index.html
new file mode 100644
index 00000000..17befe48
--- /dev/null
+++ b/2.8/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.8/containers/CCHashTrie/module-type-S/index.html b/2.8/containers/CCHashTrie/module-type-S/index.html
new file mode 100644
index 00000000..a2a6d6af
--- /dev/null
+++ b/2.8/containers/CCHashTrie/module-type-S/index.html
@@ -0,0 +1,2 @@
+
+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.8/containers/CCHashtbl/.dune-keep b/2.8/containers/CCHashtbl/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCHashtbl/Poly/index.html b/2.8/containers/CCHashtbl/Poly/index.html
new file mode 100644
index 00000000..5e156d40
--- /dev/null
+++ b/2.8/containers/CCHashtbl/Poly/index.html
@@ -0,0 +1,2 @@
+
+Poly (containers.CCHashtbl.Poly)
Module CCHashtbl.Poly
val get : ('a, 'b) Stdlib.Hashtbl.t ->'a->'b option
Safe version of Hashtbl.find.
val get_or : ('a, 'b) Stdlib.Hashtbl.t ->'a-> default:'b->'b
get_or tbl k ~default returns the value associated to k if present, and returns default otherwise (if k doesn't belong in tbl).
val keys_list : ('a, 'b) Stdlib.Hashtbl.t ->'a list
keys_list 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) Stdlib.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) Stdlib.Hashtbl.t ->'c list
Map on a hashtable's items, collect into a list.
val incr : ?by:int -> ('a, int) Stdlib.Hashtbl.t ->'a-> unit
incr ?by tbl x increments or initializes the counter associated with x. If get tbl x = None, then after update, get tbl x = Some 1; otherwise, if get tbl x = Some n, now get tbl x = Some (n+1).
parameter by
if specified, the int value is incremented by by rather than 1.
since
0.16
val decr : ?by:int -> ('a, int) Stdlib.Hashtbl.t ->'a-> unit
Like incr but subtract 1 (or the value of by). If the value reaches 0, the key is removed from the table. This does nothing if the key is not already present in the table.
since
0.16
val to_iter : ('a, 'b) Stdlib.Hashtbl.t -> ('a * 'b) iter
val of_seq : ('a * 'b) sequence-> ('a, 'b) Stdlib.Hashtbl.t
val add_iter_count : ('a, int) Stdlib.Hashtbl.t ->'aiter-> unit
add_iter_count tbl i increments the count of each element of i by calling incr. This is useful for counting how many times each element of i occurs.
since
2.8
val add_std_seq_count : ('a, int) Stdlib.Hashtbl.t ->'a Stdlib.Seq.t -> unit
add_seq_count tbl seq increments the count of each element of seq by calling incr. This is useful for counting how many times each element of seq occurs.
since
2.8
val add_seq_count : ('a, int) Stdlib.Hashtbl.t ->'asequence-> unit
val of_iter_count : 'aiter-> ('a, int) Stdlib.Hashtbl.t
Like add_seq_count, but allocates a new table and returns it.
since
2.8
val of_std_seq_count : 'a Stdlib.Seq.t -> ('a, int) Stdlib.Hashtbl.t
Like add_seq_count, but allocates a new table and returns it.
since
2.8
val of_seq_count : 'asequence-> ('a, int) Stdlib.Hashtbl.t
val to_list : ('a, 'b) Stdlib.Hashtbl.t -> ('a * 'b) list
List of bindings (order unspecified).
val of_list : ('a * 'b) list -> ('a, 'b) Stdlib.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) Stdlib.Hashtbl.t -> f:('a->'b option ->'b option) -> k:'a-> unit
update tbl ~f ~k updates key k by calling f k (Some v) if k was mapped to v, or f k None otherwise; if the call returns None then k is removed/stays removed, if the call returns Some v' then the binding k -> v' is inserted using Hashtbl.replace.
since
0.14
val get_or_add : ('a, 'b) Stdlib.Hashtbl.t -> f:('a->'b) -> k:'a->'b
get_or_add tbl ~k ~f finds and returns the binding of k in tbl, if it exists. If it does not exist, then f k is called to obtain a new binding v; k -> v is added to tbl and v is returned.
\ No newline at end of file
diff --git a/2.8/containers/CCHashtbl/index.html b/2.8/containers/CCHashtbl/index.html
new file mode 100644
index 00000000..7d22ead3
--- /dev/null
+++ b/2.8/containers/CCHashtbl/index.html
@@ -0,0 +1,2 @@
+
+CCHashtbl (containers.CCHashtbl)
Module CCHashtbl
Extension to the standard Hashtbl
since
0.4
type 'a sequence = ('a-> unit) -> unit
deprecated
use 'a iter instead
type 'a iter = ('a-> unit) -> unit
Fast internal iterator.
since
2.8
type 'a eq = 'a->'a-> bool
type 'a hash = 'a-> int
type 'a printer = Stdlib.Format.formatter ->'a-> unit
val keys_list : ('a, 'b) Stdlib.Hashtbl.t ->'a list
keys_list 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) Stdlib.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) Stdlib.Hashtbl.t ->'c list
Map on a hashtable's items, collect into a list.
val incr : ?by:int -> ('a, int) Stdlib.Hashtbl.t ->'a-> unit
incr ?by tbl x increments or initializes the counter associated with x. If get tbl x = None, then after update, get tbl x = Some 1; otherwise, if get tbl x = Some n, now get tbl x = Some (n+1).
parameter by
if specified, the int value is incremented by by rather than 1.
since
0.16
val decr : ?by:int -> ('a, int) Stdlib.Hashtbl.t ->'a-> unit
Like incr but subtract 1 (or the value of by). If the value reaches 0, the key is removed from the table. This does nothing if the key is not already present in the table.
since
0.16
val to_iter : ('a, 'b) Stdlib.Hashtbl.t -> ('a * 'b) iter
val of_seq : ('a * 'b) sequence-> ('a, 'b) Stdlib.Hashtbl.t
val add_iter_count : ('a, int) Stdlib.Hashtbl.t ->'aiter-> unit
add_iter_count tbl i increments the count of each element of i by calling incr. This is useful for counting how many times each element of i occurs.
since
2.8
val add_std_seq_count : ('a, int) Stdlib.Hashtbl.t ->'a Stdlib.Seq.t -> unit
add_seq_count tbl seq increments the count of each element of seq by calling incr. This is useful for counting how many times each element of seq occurs.
since
2.8
val add_seq_count : ('a, int) Stdlib.Hashtbl.t ->'asequence-> unit
val of_iter_count : 'aiter-> ('a, int) Stdlib.Hashtbl.t
Like add_seq_count, but allocates a new table and returns it.
since
2.8
val of_std_seq_count : 'a Stdlib.Seq.t -> ('a, int) Stdlib.Hashtbl.t
Like add_seq_count, but allocates a new table and returns it.
since
2.8
val of_seq_count : 'asequence-> ('a, int) Stdlib.Hashtbl.t
val to_list : ('a, 'b) Stdlib.Hashtbl.t -> ('a * 'b) list
List of bindings (order unspecified).
val of_list : ('a * 'b) list -> ('a, 'b) Stdlib.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) Stdlib.Hashtbl.t -> f:('a->'b option ->'b option) -> k:'a-> unit
update tbl ~f ~k updates key k by calling f k (Some v) if k was mapped to v, or f k None otherwise; if the call returns None then k is removed/stays removed, if the call returns Some v' then the binding k -> v' is inserted using Hashtbl.replace.
since
0.14
val get_or_add : ('a, 'b) Stdlib.Hashtbl.t -> f:('a->'b) -> k:'a->'b
get_or_add tbl ~k ~f finds and returns the binding of k in tbl, if it exists. If it does not exist, then f k is called to obtain a new binding v; k -> v is added to tbl and v is returned.
module Make : functor (X : Stdlib.Hashtbl.HashedType) ->SwithtypeMake.key = X.t andtype 'a Make.t = 'a Stdlib.Hashtbl.Make(X).t
\ No newline at end of file
diff --git a/2.8/containers/CCHashtbl/module-type-S/index.html b/2.8/containers/CCHashtbl/module-type-S/index.html
new file mode 100644
index 00000000..106fa7c1
--- /dev/null
+++ b/2.8/containers/CCHashtbl/module-type-S/index.html
@@ -0,0 +1,2 @@
+
+S (containers.CCHashtbl.S)
incr ?by tbl x increments or initializes the counter associated with x. If get tbl x = None, then after update, get tbl x = Some 1; otherwise, if get tbl x = Some n, now get tbl x = Some (n+1).
parameter by
if specified, the int value is incremented by by rather than 1.
Like incr but subtract 1 (or the value of by). If the value reaches 0, the key is removed from the table. This does nothing if the key is not already present in the table.
add_iter_count tbl i increments the count of each element of i by calling incr. This is useful for counting how many times each element of i occurs.
since
2.8
val add_std_seq_count : int t->key Stdlib.Seq.t -> unit
add_seq_count tbl seq increments the count of each element of seq by calling incr. This is useful for counting how many times each element of seq occurs.
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.
\ No newline at end of file
diff --git a/2.8/containers/CCHeap/.dune-keep b/2.8/containers/CCHeap/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCHeap/Make/argument-1-E/index.html b/2.8/containers/CCHeap/Make/argument-1-E/index.html
new file mode 100644
index 00000000..b0e09a7b
--- /dev/null
+++ b/2.8/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.8/containers/CCHeap/Make/index.html b/2.8/containers/CCHeap/Make/index.html
new file mode 100644
index 00000000..f230390a
--- /dev/null
+++ b/2.8/containers/CCHeap/Make/index.html
@@ -0,0 +1,2 @@
+
+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.8/containers/CCHeap/Make_from_compare/argument-1-E/index.html b/2.8/containers/CCHeap/Make_from_compare/argument-1-E/index.html
new file mode 100644
index 00000000..ec408bce
--- /dev/null
+++ b/2.8/containers/CCHeap/Make_from_compare/argument-1-E/index.html
@@ -0,0 +1,2 @@
+
+1-E (containers.CCHeap.Make_from_compare.1-E)
compare a b shall return a negative value if a is smaller than b, 0 if a and b are equal or a positive value if a is greater than b
\ No newline at end of file
diff --git a/2.8/containers/CCHeap/Make_from_compare/index.html b/2.8/containers/CCHeap/Make_from_compare/index.html
new file mode 100644
index 00000000..b54efa80
--- /dev/null
+++ b/2.8/containers/CCHeap/Make_from_compare/index.html
@@ -0,0 +1,2 @@
+
+Make_from_compare (containers.CCHeap.Make_from_compare)
Module CCHeap.Make_from_compare
A convenient version of Make that take a TOTAL_ORD instead of a partially ordered module. It allow to directly pass modules that implement compare without implementing leq explicitly
Delete 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.8/containers/CCHeap/index.html b/2.8/containers/CCHeap/index.html
new file mode 100644
index 00000000..d3d21f59
--- /dev/null
+++ b/2.8/containers/CCHeap/index.html
@@ -0,0 +1,2 @@
+
+CCHeap (containers.CCHeap)
Module CCHeap
Leftist Heaps
Implementation following Okasaki's book.
type 'a sequence = ('a-> unit) -> unit
deprecated
use 'a iter instead
type 'a iter = ('a-> unit) -> unit
Fast internal iterator.
since
2.8
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 ]
type 'a printer = Stdlib.Format.formatter ->'a-> unit
A convenient version of Make that take a TOTAL_ORD instead of a partially ordered module. It allow to directly pass modules that implement compare without implementing leq explicitly
\ No newline at end of file
diff --git a/2.8/containers/CCHeap/module-type-PARTIAL_ORD/index.html b/2.8/containers/CCHeap/module-type-PARTIAL_ORD/index.html
new file mode 100644
index 00000000..681f2275
--- /dev/null
+++ b/2.8/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.8/containers/CCHeap/module-type-S/index.html b/2.8/containers/CCHeap/module-type-S/index.html
new file mode 100644
index 00000000..59b4c178
--- /dev/null
+++ b/2.8/containers/CCHeap/module-type-S/index.html
@@ -0,0 +1,2 @@
+
+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.8/containers/CCHeap/module-type-TOTAL_ORD/index.html b/2.8/containers/CCHeap/module-type-TOTAL_ORD/index.html
new file mode 100644
index 00000000..d4945e90
--- /dev/null
+++ b/2.8/containers/CCHeap/module-type-TOTAL_ORD/index.html
@@ -0,0 +1,2 @@
+
+TOTAL_ORD (containers.CCHeap.TOTAL_ORD)
compare a b shall return a negative value if a is smaller than b, 0 if a and b are equal or a positive value if a is greater than b
\ No newline at end of file
diff --git a/2.8/containers/CCHet/.dune-keep b/2.8/containers/CCHet/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCHet/Key/index.html b/2.8/containers/CCHet/Key/index.html
new file mode 100644
index 00000000..8652c0c5
--- /dev/null
+++ b/2.8/containers/CCHet/Key/index.html
@@ -0,0 +1,2 @@
+
+Key (containers.CCHet.Key)
\ No newline at end of file
diff --git a/2.8/containers/CCHet/Map/index.html b/2.8/containers/CCHet/Map/index.html
new file mode 100644
index 00000000..56b028fe
--- /dev/null
+++ b/2.8/containers/CCHet/Map/index.html
@@ -0,0 +1,2 @@
+
+Map (containers.CCHet.Map)
\ No newline at end of file
diff --git a/2.8/containers/CCHet/Tbl/index.html b/2.8/containers/CCHet/Tbl/index.html
new file mode 100644
index 00000000..4ac0719c
--- /dev/null
+++ b/2.8/containers/CCHet/Tbl/index.html
@@ -0,0 +1,2 @@
+
+Tbl (containers.CCHet.Tbl)
\ No newline at end of file
diff --git a/2.8/containers/CCHet/index.html b/2.8/containers/CCHet/index.html
new file mode 100644
index 00000000..cfb65b6f
--- /dev/null
+++ b/2.8/containers/CCHet/index.html
@@ -0,0 +1,2 @@
+
+CCHet (containers.CCHet)
Module CCHet
Associative containers with Heterogeneous Values
This is similar to CCMixtbl, but the injection is directly used as a key.
\ No newline at end of file
diff --git a/2.8/containers/CCIO/.dune-keep b/2.8/containers/CCIO/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCIO/File/index.html b/2.8/containers/CCIO/File/index.html
new file mode 100644
index 00000000..f6875fa7
--- /dev/null
+++ b/2.8/containers/CCIO/File/index.html
@@ -0,0 +1,2 @@
+
+File (containers.CCIO.File)
Module CCIO.File
type t = string
A file should be represented by its absolute path, but currently this is not enforced.
Like read_dir (with recurse=true), this function walks a directory recursively and yields either files or directories. Is a file anything that doesn't satisfy is_directory (including symlinks, etc.)
raises Sys_error
in case of error (e.g. permission denied) during iteration.
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.8/containers/CCIO/index.html b/2.8/containers/CCIO/index.html
new file mode 100644
index 00000000..b696d2da
--- /dev/null
+++ b/2.8/containers/CCIO/index.html
@@ -0,0 +1,22 @@
+
+CCIO (containers.CCIO)
Module CCIO
IO Utils
Simple utilities to deal with basic Input/Output tasks in a resource-safe way. For advanced IO tasks, the user is advised to use something like Lwt or Async, that are far more comprehensive.
Examples:
obtain the list of lines of a file:
# let l = CCIO.(with_in "/tmp/some_file" read_lines_l);;
transfer one file into another:
# CCIO.(
+ with_in "/tmp/input"
+ (fun ic ->
+ let chunks = read_chunks_gen ic in
+ with_out ~flags:[Open_binary; Open_creat] ~mode:0o644 "/tmp/output"
+ (fun oc ->
+ write_gen oc chunks
+ )
+ )
+ ) ;;
Note that the lifetime of an IO generator is tied to the underlying channel. In the example above, chunks must be used in the scope of ic. This will raise an error:
val with_in : ?mode:int -> ?flags:Stdlib.open_flag list -> string -> (Stdlib.in_channel ->'a) ->'a
Open an input file with the given optional flag list, calls the function on the input channel. When the function raises or returns, the channel is closed.
raises Sys_error
in case of error (same as open_in and close_in).
parameter flags
opening flags (default [Open_text]). Open_rdonly is used in any cases.
val read_chunks : ?size:int -> Stdlib.in_channel -> string gen
val read_chunks_gen : ?size:int -> Stdlib.in_channel -> string gen
Read the channel's content into chunks of size size. NOTE the generator must be used within the lifetime of the channel, see warning at the top of the file.
val read_line : Stdlib.in_channel -> string option
Read a line from the channel. Returns None if the input is terminated. The "\n" is removed from the line.
val read_lines_gen : Stdlib.in_channel -> string gen
Read all lines. The generator should be traversed only once. NOTE the generator must be used within the lifetime of the channel, see warning at the top of the file.
val read_lines_l : Stdlib.in_channel -> string list
Read all lines into a list.
val read_all : ?size:int -> Stdlib.in_channel -> string
Read the whole channel into a buffer, then converted into a string.
parameter size
the internal buffer size.
since
0.7
val read_all_bytes : ?size:int -> Stdlib.in_channel -> Stdlib.Bytes.t
Read the whole channel into a mutable byte array.
parameter size
the internal buffer size.
since
0.12
Output
val with_out : ?mode:int -> ?flags:Stdlib.open_flag list -> string -> (Stdlib.out_channel ->'a) ->'a
\ No newline at end of file
diff --git a/2.8/containers/CCImmutArray/.dune-keep b/2.8/containers/CCImmutArray/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCImmutArray/index.html b/2.8/containers/CCImmutArray/index.html
new file mode 100644
index 00000000..51b81684
--- /dev/null
+++ b/2.8/containers/CCImmutArray/index.html
@@ -0,0 +1,2 @@
+
+CCImmutArray (containers.CCImmutArray)
Module CCImmutArray
Immutable Arrays
Purely functional use of arrays. Update is costly, but reads are very fast. Sadly, it is not possible to make this type covariant without using black magic.
since
0.17
type 'a t
Array of values of type 'a. The underlying type really is an array, but it will never be modified.
It should be covariant but OCaml will not accept it.
sub a start len returns a fresh array of length len, containing the elements from start to pstart + len - 1 of array a.
Raises Invalid_argument "Array.sub" if start and len do not designate a valid subarray of a; that is, if start < 0, or len < 0, or start + len > Array.length a.
type 'a printer = Stdlib.Format.formatter ->'a-> unit
val pp : ?start:string -> ?stop:string -> ?sep:string ->'aprinter->'atprinter
\ No newline at end of file
diff --git a/2.8/containers/CCInt/.dune-keep b/2.8/containers/CCInt/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCInt/Infix/index.html b/2.8/containers/CCInt/Infix/index.html
new file mode 100644
index 00000000..99f1246a
--- /dev/null
+++ b/2.8/containers/CCInt/Infix/index.html
@@ -0,0 +1,2 @@
+
+Infix (containers.CCInt.Infix)
\ No newline at end of file
diff --git a/2.8/containers/CCInt/index.html b/2.8/containers/CCInt/index.html
new file mode 100644
index 00000000..6e78d249
--- /dev/null
+++ b/2.8/containers/CCInt/index.html
@@ -0,0 +1,2 @@
+
+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.8/containers/CCInt32/.dune-keep b/2.8/containers/CCInt32/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCInt32/Infix/index.html b/2.8/containers/CCInt32/Infix/index.html
new file mode 100644
index 00000000..e74e00c4
--- /dev/null
+++ b/2.8/containers/CCInt32/Infix/index.html
@@ -0,0 +1,2 @@
+
+Infix (containers.CCInt32.Infix)
\ No newline at end of file
diff --git a/2.8/containers/CCInt32/index.html b/2.8/containers/CCInt32/index.html
new file mode 100644
index 00000000..1501b428
--- /dev/null
+++ b/2.8/containers/CCInt32/index.html
@@ -0,0 +1,2 @@
+
+CCInt32 (containers.CCInt32)
Module CCInt32
Int32
Helpers for 32-bit integers.
This module provides operations on the type int32 of signed 32-bit integers. Unlike the built-in int type, the type int32 is guaranteed to be exactly 32-bit wide on all platforms. All arithmetic operations over int32 are taken modulo 232.
Performance notice: values of type int32 occupy more memory space than values of type int, and arithmetic operations on int32 are generally slower than those on int. Use int32 only when the application requires exact 32-bit arithmetic.
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.8/containers/CCInt64/.dune-keep b/2.8/containers/CCInt64/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCInt64/Infix/index.html b/2.8/containers/CCInt64/Infix/index.html
new file mode 100644
index 00000000..340f3719
--- /dev/null
+++ b/2.8/containers/CCInt64/Infix/index.html
@@ -0,0 +1,2 @@
+
+Infix (containers.CCInt64.Infix)
\ No newline at end of file
diff --git a/2.8/containers/CCInt64/index.html b/2.8/containers/CCInt64/index.html
new file mode 100644
index 00000000..2c86c41c
--- /dev/null
+++ b/2.8/containers/CCInt64/index.html
@@ -0,0 +1,2 @@
+
+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.8/containers/CCIntMap/.dune-keep b/2.8/containers/CCIntMap/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCIntMap/index.html b/2.8/containers/CCIntMap/index.html
new file mode 100644
index 00000000..a4cd884f
--- /dev/null
+++ b/2.8/containers/CCIntMap/index.html
@@ -0,0 +1,2 @@
+
+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.8/containers/CCKList/.dune-keep b/2.8/containers/CCKList/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCKList/Infix/index.html b/2.8/containers/CCKList/Infix/index.html
new file mode 100644
index 00000000..400491db
--- /dev/null
+++ b/2.8/containers/CCKList/Infix/index.html
@@ -0,0 +1,2 @@
+
+Infix (containers.CCKList.Infix)
\ No newline at end of file
diff --git a/2.8/containers/CCKList/Traverse/argument-1-M/index.html b/2.8/containers/CCKList/Traverse/argument-1-M/index.html
new file mode 100644
index 00000000..f31d152f
--- /dev/null
+++ b/2.8/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.8/containers/CCKList/Traverse/index.html b/2.8/containers/CCKList/Traverse/index.html
new file mode 100644
index 00000000..7da6a952
--- /dev/null
+++ b/2.8/containers/CCKList/Traverse/index.html
@@ -0,0 +1,2 @@
+
+Traverse (containers.CCKList.Traverse)
\ No newline at end of file
diff --git a/2.8/containers/CCKList/index.html b/2.8/containers/CCKList/index.html
new file mode 100644
index 00000000..5ea9d9ee
--- /dev/null
+++ b/2.8/containers/CCKList/index.html
@@ -0,0 +1,2 @@
+
+CCKList (containers.CCKList)
Module CCKList
Continuation List
deprecated
since 2.7, you should use the standard Seq instead. See oseq for similar combinators.
type 'a sequence = ('a-> unit) -> unit
type 'a gen = unit ->'a option
type 'a equal = 'a->'a-> bool
type 'a ord = 'a->'a-> int
type 'a printer = Stdlib.Format.formatter ->'a-> unit
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.8/containers/CCKList/module-type-MONAD/index.html b/2.8/containers/CCKList/module-type-MONAD/index.html
new file mode 100644
index 00000000..46e8fd59
--- /dev/null
+++ b/2.8/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.8/containers/CCKTree/.dune-keep b/2.8/containers/CCKTree/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCKTree/Dot/index.html b/2.8/containers/CCKTree/Dot/index.html
new file mode 100644
index 00000000..7c96b1b2
--- /dev/null
+++ b/2.8/containers/CCKTree/Dot/index.html
@@ -0,0 +1,2 @@
+
+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.
parameter name
name of the graph.
since
0.6.1
\ No newline at end of file
diff --git a/2.8/containers/CCKTree/class-type-pset/index.html b/2.8/containers/CCKTree/class-type-pset/index.html
new file mode 100644
index 00000000..c191fffd
--- /dev/null
+++ b/2.8/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.8/containers/CCKTree/index.html b/2.8/containers/CCKTree/index.html
new file mode 100644
index 00000000..3d47bb0b
--- /dev/null
+++ b/2.8/containers/CCKTree/index.html
@@ -0,0 +1,15 @@
+
+CCKTree (containers.CCKTree)
Module CCKTree
Lazy Tree Structure
This structure can be used to represent trees and directed graphs (as infinite trees) in a lazy fashion. Like CCKList, it is a structural type.
type 'a sequence = ('a-> unit) -> unit
type 'a gen = unit ->'a option
type 'a klist = unit -> [ `Nil | `Cons of 'a * 'aklist ]
type 'a printer = Stdlib.Format.formatter ->'a-> unit
Basics
type +'a t = unit -> [ `Nil | `Node of 'a * 'at list ]
val force : 'at-> [ `Nil | `Node of 'a * 'b list ] as b
force t evaluates t completely and returns a regular tree structure.
since
0.13
val find : pset:'apset-> ('a->'b option) ->'at->'b option
Look for an element that maps to Some _.
Pretty-printing
Example (tree of calls for naive Fibonacci function):
let mk_fib n =
+ let rec fib' l r i =
+ if i=n then r else fib' r (l+r) (i+1)
+ in fib' 1 1 1;;
+
+let rec fib n = match n with
+ | 0 | 1 -> CCKTree.singleton (`Cst n)
+ | _ -> CCKTree.node2 (`Plus (mk_fib n)) (fib (n-1)) (fib (n-2));;
+
+let pp_node fmt = function
+ | `Cst n -> Format.fprintf fmt "%d" n
+ | `Plus n -> Format.fprintf fmt "%d" n;;
+
+Format.printf "%a@." (CCKTree.pp pp_node) (fib 8);;
\ No newline at end of file
diff --git a/2.8/containers/CCLazy_list/.dune-keep b/2.8/containers/CCLazy_list/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCLazy_list/Infix/index.html b/2.8/containers/CCLazy_list/Infix/index.html
new file mode 100644
index 00000000..df78cf03
--- /dev/null
+++ b/2.8/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.8/containers/CCLazy_list/index.html b/2.8/containers/CCLazy_list/index.html
new file mode 100644
index 00000000..18b9a963
--- /dev/null
+++ b/2.8/containers/CCLazy_list/index.html
@@ -0,0 +1,2 @@
+
+CCLazy_list (containers.CCLazy_list)
\ No newline at end of file
diff --git a/2.8/containers/CCList/.dune-keep b/2.8/containers/CCList/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCList/Assoc/index.html b/2.8/containers/CCList/Assoc/index.html
new file mode 100644
index 00000000..d463a51a
--- /dev/null
+++ b/2.8/containers/CCList/Assoc/index.html
@@ -0,0 +1,2 @@
+
+Assoc (containers.CCList.Assoc)
Module CCList.Assoc
type ('a, 'b) t = ('a * 'b) list
val get : eq:('a->'a-> bool) ->'a-> ('a, 'b) t->'b option
Find the element.
val get_exn : eq:('a->'a-> bool) ->'a-> ('a, 'b) t->'b
Like get, but unsafe.
raises Not_found
if the element is not present.
val set : eq:('a->'a-> bool) ->'a->'b-> ('a, 'b) t-> ('a, 'b) t
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.8/containers/CCList/Infix/index.html b/2.8/containers/CCList/Infix/index.html
new file mode 100644
index 00000000..7e91b72d
--- /dev/null
+++ b/2.8/containers/CCList/Infix/index.html
@@ -0,0 +1,2 @@
+
+Infix (containers.CCList.Infix)
\ No newline at end of file
diff --git a/2.8/containers/CCList/Ref/index.html b/2.8/containers/CCList/Ref/index.html
new file mode 100644
index 00000000..580bd122
--- /dev/null
+++ b/2.8/containers/CCList/Ref/index.html
@@ -0,0 +1,2 @@
+
+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.8/containers/CCList/Traverse/argument-1-M/index.html b/2.8/containers/CCList/Traverse/argument-1-M/index.html
new file mode 100644
index 00000000..465ec6fb
--- /dev/null
+++ b/2.8/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.8/containers/CCList/Traverse/index.html b/2.8/containers/CCList/Traverse/index.html
new file mode 100644
index 00000000..1099d6e7
--- /dev/null
+++ b/2.8/containers/CCList/Traverse/index.html
@@ -0,0 +1,2 @@
+
+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.8/containers/CCList/index.html b/2.8/containers/CCList/index.html
new file mode 100644
index 00000000..438b1326
--- /dev/null
+++ b/2.8/containers/CCList/index.html
@@ -0,0 +1,6 @@
+
+CCList (containers.CCList)
Module CCList
Complements to list
type 'a sequence = ('a-> unit) -> unit
deprecated
use 'a iter instead
type 'a iter = ('a-> unit) -> unit
Fast internal iterator.
since
2.8
type 'a gen = unit ->'a option
type 'a klist = unit -> [ `Nil | `Cons of 'a * 'aklist ]
type 'a printer = Stdlib.Format.formatter ->'a-> unit
type 'a random_gen = Stdlib.Random.State.t ->'a
includemoduletypeof Stdlib.List
type 'a t = 'a list =
| ([])
| (::)of'a * 'a list
val length : 'a list -> int
val compare_lengths : 'a list ->'b list -> int
val compare_length_with : 'a list -> int -> int
val cons : 'a->'a list ->'a list
val hd : 'a list ->'a
val tl : 'a list ->'a list
val nth : 'a list -> int ->'a
val nth_opt : 'a list -> int ->'a option
val rev : 'a list ->'a list
val init : int -> (int ->'a) ->'a list
val append : 'a list ->'a list ->'a list
val rev_append : 'a list ->'a list ->'a list
val concat : 'a list list ->'a list
val flatten : 'a list list ->'a list
val iter : ('a-> unit) ->'a list -> unit
val iteri : (int ->'a-> unit) ->'a list -> unit
val map : ('a->'b) ->'a list ->'b list
val mapi : (int ->'a->'b) ->'a list ->'b list
val rev_map : ('a->'b) ->'a list ->'b list
val filter_map : ('a->'b option) ->'a list ->'b list
val 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)].
raises Invalid_argument
if the lists have distinct lengths.
since
1.2, but only
since
2.2 with labels
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, but only
since
2.2 with labels
val map_product_l : ('a->'b list) ->'a list ->'b list list
map_product_l f l maps each element of l to a list of objects of type 'b using f. We obtain [l1;l2;...;ln] where length l=n and li : 'b list. Then, it returns all the ways of picking exactly one element per li.
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].
the number of elements skipped between two consecutive sub-lists. By default it is n. If offset < n, the sub-lists will overlap; if offset > n, some elements will not appear at all.
parameter last
if provided and the last group of elements g is such that length g < n, last g is called. If last g = Some g', g' is appended; otherwise g is dropped. If last = CCOpt.return, it will simply keep the last group. By default, last = fun _ -> None, i.e. the last group is dropped if shorter than n.
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.8/containers/CCList/module-type-MONAD/index.html b/2.8/containers/CCList/module-type-MONAD/index.html
new file mode 100644
index 00000000..0f47f52b
--- /dev/null
+++ b/2.8/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.8/containers/CCListLabels/.dune-keep b/2.8/containers/CCListLabels/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCListLabels/Assoc/index.html b/2.8/containers/CCListLabels/Assoc/index.html
new file mode 100644
index 00000000..b863148e
--- /dev/null
+++ b/2.8/containers/CCListLabels/Assoc/index.html
@@ -0,0 +1,2 @@
+
+Assoc (containers.CCListLabels.Assoc)
Module CCListLabels.Assoc
type ('a, 'b) t = ('a * 'b) list
val get : eq:('a->'a-> bool) ->'a-> ('a, 'b) t->'b option
Find the element.
val get_exn : eq:('a->'a-> bool) ->'a-> ('a, 'b) t->'b
Like get, but unsafe.
raises Not_found
if the element is not present.
val set : eq:('a->'a-> bool) ->'a->'b-> ('a, 'b) t-> ('a, 'b) t
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.8/containers/CCListLabels/Infix/index.html b/2.8/containers/CCListLabels/Infix/index.html
new file mode 100644
index 00000000..f3ae497e
--- /dev/null
+++ b/2.8/containers/CCListLabels/Infix/index.html
@@ -0,0 +1,2 @@
+
+Infix (containers.CCListLabels.Infix)
\ No newline at end of file
diff --git a/2.8/containers/CCListLabels/Ref/index.html b/2.8/containers/CCListLabels/Ref/index.html
new file mode 100644
index 00000000..d3c2e25c
--- /dev/null
+++ b/2.8/containers/CCListLabels/Ref/index.html
@@ -0,0 +1,2 @@
+
+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.8/containers/CCListLabels/Traverse/argument-1-M/index.html b/2.8/containers/CCListLabels/Traverse/argument-1-M/index.html
new file mode 100644
index 00000000..65e681cf
--- /dev/null
+++ b/2.8/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.8/containers/CCListLabels/Traverse/index.html b/2.8/containers/CCListLabels/Traverse/index.html
new file mode 100644
index 00000000..f2e38b53
--- /dev/null
+++ b/2.8/containers/CCListLabels/Traverse/index.html
@@ -0,0 +1,2 @@
+
+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.8/containers/CCListLabels/index.html b/2.8/containers/CCListLabels/index.html
new file mode 100644
index 00000000..a52e0949
--- /dev/null
+++ b/2.8/containers/CCListLabels/index.html
@@ -0,0 +1,6 @@
+
+CCListLabels (containers.CCListLabels)
Module CCListLabels
Complements to list
type 'a sequence = ('a-> unit) -> unit
deprecated
use 'a iter instead
type 'a iter = ('a-> unit) -> unit
Fast internal iterator.
since
2.8
type 'a gen = unit ->'a option
type 'a klist = unit -> [ `Nil | `Cons of 'a * 'aklist ]
type 'a printer = Stdlib.Format.formatter ->'a-> unit
type 'a random_gen = Stdlib.Random.State.t ->'a
includemoduletypeof Stdlib.ListLabels
type 'a t = 'a list =
| ([])
| (::)of'a * 'a list
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 filter_map : f:('a->'b option) ->'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.
val fold_right : f:('a->'b->'b) ->'at-> init:'b->'b
Safe version of fold_right. fold_right f [a1; ...; an] b is f a1 (f a2 (... (f an b) ...)).
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)].
raises Invalid_argument
if the lists have distinct lengths.
since
1.2, but only
since
2.2 with labels
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, but only
since
2.2 with labels
val map_product_l : f:('a->'b list) ->'a list ->'b list list
map_product_l f l maps each element of l to a list of objects of type 'b using f. We obtain [l1;l2;...;ln] where length l=n and li : 'b list. Then, it returns all the ways of picking exactly one element per li.
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].
the number of elements skipped between two consecutive sub-lists. By default it is n. If offset < n, the sub-lists will overlap; if offset > n, some elements will not appear at all.
parameter last
if provided and the last group of elements g is such that length g < n, last g is called. If last g = Some g', g' is appended; otherwise g is dropped. If last = CCOpt.return, it will simply keep the last group. By default, last = fun _ -> None, i.e. the last group is dropped if shorter than n.
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.8/containers/CCListLabels/module-type-MONAD/index.html b/2.8/containers/CCListLabels/module-type-MONAD/index.html
new file mode 100644
index 00000000..f5bf114c
--- /dev/null
+++ b/2.8/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.8/containers/CCLock/.dune-keep b/2.8/containers/CCLock/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCLock/LockRef/index.html b/2.8/containers/CCLock/LockRef/index.html
new file mode 100644
index 00000000..ad19ece4
--- /dev/null
+++ b/2.8/containers/CCLock/LockRef/index.html
@@ -0,0 +1,2 @@
+
+LockRef (containers.CCLock.LockRef)
Module CCLock.LockRef
Type allowing to manipulate the lock as a reference.
\ No newline at end of file
diff --git a/2.8/containers/CCLock/index.html b/2.8/containers/CCLock/index.html
new file mode 100644
index 00000000..d6531e66
--- /dev/null
+++ b/2.8/containers/CCLock/index.html
@@ -0,0 +1,2 @@
+
+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.8/containers/CCMap/.dune-keep b/2.8/containers/CCMap/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCMap/index.html b/2.8/containers/CCMap/index.html
new file mode 100644
index 00000000..e614aa92
--- /dev/null
+++ b/2.8/containers/CCMap/index.html
@@ -0,0 +1,2 @@
+
+CCMap (containers.CCMap)
Module CCMap
Extensions of Standard Map
Provide useful functions and iterators on Map.S
since
0.5
type 'a sequence = ('a-> unit) -> unit
deprecated
use 'a iter instead
type 'a iter = ('a-> unit) -> unit
Fast internal iterator.
since
2.8
type 'a printer = Stdlib.Format.formatter ->'a-> unit
module Make : functor (O : Stdlib.Map.OrderedType) ->Swithtype 'a Make.t = 'a Stdlib.Map.Make(O).t andtypeMake.key = O.t
\ No newline at end of file
diff --git a/2.8/containers/CCMap/module-type-S/index.html b/2.8/containers/CCMap/module-type-S/index.html
new file mode 100644
index 00000000..e004370f
--- /dev/null
+++ b/2.8/containers/CCMap/module-type-S/index.html
@@ -0,0 +1,2 @@
+
+S (containers.CCMap.S)
get_or k m ~default returns the value associated to k if present, and returns default otherwise (if k doesn't belong in m).
since
0.16
val update : key-> ('a option ->'a option) ->'at->'at
update k f m calls f (Some v) if find k m = v, otherwise it calls f None. In any case, if the result is Nonek is removed from m, and if the result is Some v' then add k v' m is returned.
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.8/containers/CCMixmap/.dune-keep b/2.8/containers/CCMixmap/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCMixmap/Make/argument-1-X/index.html b/2.8/containers/CCMixmap/Make/argument-1-X/index.html
new file mode 100644
index 00000000..7c773bef
--- /dev/null
+++ b/2.8/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.8/containers/CCMixmap/Make/index.html b/2.8/containers/CCMixmap/Make/index.html
new file mode 100644
index 00000000..3ff6507f
--- /dev/null
+++ b/2.8/containers/CCMixmap/Make/index.html
@@ -0,0 +1,2 @@
+
+Make (containers.CCMixmap.Make)
\ No newline at end of file
diff --git a/2.8/containers/CCMixmap/index.html b/2.8/containers/CCMixmap/index.html
new file mode 100644
index 00000000..d4308b3d
--- /dev/null
+++ b/2.8/containers/CCMixmap/index.html
@@ -0,0 +1,19 @@
+
+CCMixmap (containers.CCMixmap)
Module CCMixmap
Maps with Heterogeneous Values
status: experimental
module M = CCMixmap.Make(CCInt)
+
+let inj_int = CCMixmap.create_inj()
+let inj_str = CCMixmap.create_inj()
+let inj_list_int = CCMixmap.create_inj()
+
+let m =
+ M.empty
+ |> M.add ~inj:inj_int 1 1
+ |> M.add ~inj:inj_str 2 "2"
+ |> M.add ~inj:inj_list_int 3 [3;3;3]
+
+ assert (M.get ~inj:inj_int 1 m = Some 1)
+ assert (M.get ~inj:inj_str 1 m = None)
+ assert (M.get ~inj:inj_str 2 m = Some "2")
+ assert (M.get ~inj:inj_int 2 m = None)
+ assert (M.get ~inj:inj_list_int 3 m = Some [3;3;3])
+ assert (M.get ~inj:inj_str 3 m = None)
change of API, the map is last argument to make piping with |> easier since 0.16.
since
0.9
type 'a injection
An accessor for values of type 'a in any map. Values put in the map using a key can only be retrieved using this very same key.
Return a value that works for a given type of values. This function is normally called once for each type of value. Several keys may be created for the same type, but a value set with a given setter can only be retrieved with the matching getter. The same key can be reused across multiple maps (although not in a thread-safe way).
\ No newline at end of file
diff --git a/2.8/containers/CCMixmap/module-type-ORD/index.html b/2.8/containers/CCMixmap/module-type-ORD/index.html
new file mode 100644
index 00000000..ee44bb2c
--- /dev/null
+++ b/2.8/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.8/containers/CCMixmap/module-type-S/index.html b/2.8/containers/CCMixmap/module-type-S/index.html
new file mode 100644
index 00000000..ef0a972c
--- /dev/null
+++ b/2.8/containers/CCMixmap/module-type-S/index.html
@@ -0,0 +1,2 @@
+
+S (containers.CCMixmap.S)
Module type CCMixmap.S
type key
type t
A map containing values of different types, indexed by key.
\ No newline at end of file
diff --git a/2.8/containers/CCMixset/.dune-keep b/2.8/containers/CCMixset/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCMixset/index.html b/2.8/containers/CCMixset/index.html
new file mode 100644
index 00000000..8244bf2b
--- /dev/null
+++ b/2.8/containers/CCMixset/index.html
@@ -0,0 +1,14 @@
+
+CCMixset (containers.CCMixset)
Module CCMixset
Set of Heterogeneous Values
let k1 : int key = newkey () in
+let k2 : int key = newkey () in
+let k3 : string key = newkey () in
+let set =
+ empty
+ |> set ~key:k1 1
+ |> set ~key:k2 2
+ |> set ~key:k3 "3"
+in
+assert (get ~key:k1 set = Some 1);
+assert (get ~key:k2 set = Some 2);
+assert (get ~key:k3 set = Some "3");
+()
since
0.11
type t
A set of values of heterogeneous types
type 'a key
A unique "key" to access a value of type 'a in a set
newkey () creates a new unique key that can be used to access a 'a value in a set. Each key created with newkey is distinct from any other key, even if they have the same type.
\ No newline at end of file
diff --git a/2.8/containers/CCMixtbl/.dune-keep b/2.8/containers/CCMixtbl/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCMixtbl/index.html b/2.8/containers/CCMixtbl/index.html
new file mode 100644
index 00000000..f0fc488f
--- /dev/null
+++ b/2.8/containers/CCMixtbl/index.html
@@ -0,0 +1,22 @@
+
+CCMixtbl (containers.CCMixtbl)
Module CCMixtbl
Hash Table with Heterogeneous Keys
From https://github.com/mjambon/mixtbl (thanks to him). Example:
Return a value that works for a given type of values. This function is normally called once for each type of value. Several keys may be created for the same type, but a value set with a given setter can only be retrieved with the matching getter. The same key can be reused across multiple tables (although not in a thread-safe way).
\ No newline at end of file
diff --git a/2.8/containers/CCMonomorphic/.dune-keep b/2.8/containers/CCMonomorphic/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCMonomorphic/index.html b/2.8/containers/CCMonomorphic/index.html
new file mode 100644
index 00000000..8a7417bb
--- /dev/null
+++ b/2.8/containers/CCMonomorphic/index.html
@@ -0,0 +1,2 @@
+
+CCMonomorphic (containers.CCMonomorphic)
Module CCMonomorphic
Shadow unsafe functions and operators from Pervasives
val (=) : int -> int -> bool
val (<>) : int -> int -> bool
val (<) : int -> int -> bool
val (>) : int -> int -> bool
val (<=) : int -> int -> bool
val (>=) : int -> int -> bool
val compare : int -> int -> int
val min : int -> int -> int
val max : int -> int -> int
Infix operators for Floats
val (=.) : float -> float -> bool
since
2.1
val (<>.) : float -> float -> bool
since
2.1
val (<.) : float -> float -> bool
since
2.1
val (>.) : float -> float -> bool
since
2.1
val (<=.) : float -> float -> bool
since
2.1
val (>=.) : float -> float -> bool
since
2.1
Shadow Dangerous Operators
val (==) : [ `Consider_using_CCEqual_physical ]
val (!=) : [ `Consider_using_CCEqual_physical ]
since
2.1
\ No newline at end of file
diff --git a/2.8/containers/CCMonomorphicShims_/.dune-keep b/2.8/containers/CCMonomorphicShims_/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCMonomorphicShims_/index.html b/2.8/containers/CCMonomorphicShims_/index.html
new file mode 100644
index 00000000..9b9f63fc
--- /dev/null
+++ b/2.8/containers/CCMonomorphicShims_/index.html
@@ -0,0 +1,2 @@
+
+CCMonomorphicShims_ (containers.CCMonomorphicShims_)
Module CCMonomorphicShims_
module Stdlib = Stdlib
\ No newline at end of file
diff --git a/2.8/containers/CCMultiMap/.dune-keep b/2.8/containers/CCMultiMap/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCMultiMap/Make/argument-1-K/index.html b/2.8/containers/CCMultiMap/Make/argument-1-K/index.html
new file mode 100644
index 00000000..ce650161
--- /dev/null
+++ b/2.8/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.8/containers/CCMultiMap/Make/argument-2-V/index.html b/2.8/containers/CCMultiMap/Make/argument-2-V/index.html
new file mode 100644
index 00000000..b563507d
--- /dev/null
+++ b/2.8/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.8/containers/CCMultiMap/Make/index.html b/2.8/containers/CCMultiMap/Make/index.html
new file mode 100644
index 00000000..7de0dcfc
--- /dev/null
+++ b/2.8/containers/CCMultiMap/Make/index.html
@@ -0,0 +1,2 @@
+
+Make (containers.CCMultiMap.Make)
\ No newline at end of file
diff --git a/2.8/containers/CCMultiMap/MakeBidir/argument-1-L/index.html b/2.8/containers/CCMultiMap/MakeBidir/argument-1-L/index.html
new file mode 100644
index 00000000..958aae1e
--- /dev/null
+++ b/2.8/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.8/containers/CCMultiMap/MakeBidir/argument-2-R/index.html b/2.8/containers/CCMultiMap/MakeBidir/argument-2-R/index.html
new file mode 100644
index 00000000..a4b2a940
--- /dev/null
+++ b/2.8/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.8/containers/CCMultiMap/MakeBidir/index.html b/2.8/containers/CCMultiMap/MakeBidir/index.html
new file mode 100644
index 00000000..98d5f56f
--- /dev/null
+++ b/2.8/containers/CCMultiMap/MakeBidir/index.html
@@ -0,0 +1,2 @@
+
+MakeBidir (containers.CCMultiMap.MakeBidir)
\ No newline at end of file
diff --git a/2.8/containers/CCMultiMap/index.html b/2.8/containers/CCMultiMap/index.html
new file mode 100644
index 00000000..e8e941a4
--- /dev/null
+++ b/2.8/containers/CCMultiMap/index.html
@@ -0,0 +1,2 @@
+
+CCMultiMap (containers.CCMultiMap)
\ No newline at end of file
diff --git a/2.8/containers/CCMultiMap/module-type-BIDIR/index.html b/2.8/containers/CCMultiMap/module-type-BIDIR/index.html
new file mode 100644
index 00000000..4a71e416
--- /dev/null
+++ b/2.8/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.8/containers/CCMultiMap/module-type-OrderedType/index.html b/2.8/containers/CCMultiMap/module-type-OrderedType/index.html
new file mode 100644
index 00000000..149b1494
--- /dev/null
+++ b/2.8/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.8/containers/CCMultiMap/module-type-S/index.html b/2.8/containers/CCMultiMap/module-type-S/index.html
new file mode 100644
index 00000000..b428c456
--- /dev/null
+++ b/2.8/containers/CCMultiMap/module-type-S/index.html
@@ -0,0 +1,2 @@
+
+S (containers.CCMultiMap.S)
\ No newline at end of file
diff --git a/2.8/containers/CCMultiSet/.dune-keep b/2.8/containers/CCMultiSet/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCMultiSet/Make/index.html b/2.8/containers/CCMultiSet/Make/index.html
new file mode 100644
index 00000000..0c641833
--- /dev/null
+++ b/2.8/containers/CCMultiSet/Make/index.html
@@ -0,0 +1,2 @@
+
+Make (containers.CCMultiSet.Make)
\ No newline at end of file
diff --git a/2.8/containers/CCMultiSet/index.html b/2.8/containers/CCMultiSet/index.html
new file mode 100644
index 00000000..31be2cf1
--- /dev/null
+++ b/2.8/containers/CCMultiSet/index.html
@@ -0,0 +1,2 @@
+
+CCMultiSet (containers.CCMultiSet)
moduleMake : functor (O : Stdlib.Set.OrderedType) ->Swithtypeelt = O.t
\ No newline at end of file
diff --git a/2.8/containers/CCMultiSet/module-type-S/index.html b/2.8/containers/CCMultiSet/module-type-S/index.html
new file mode 100644
index 00000000..3b241f26
--- /dev/null
+++ b/2.8/containers/CCMultiSet/module-type-S/index.html
@@ -0,0 +1,2 @@
+
+S (containers.CCMultiSet.S)
\ No newline at end of file
diff --git a/2.8/containers/CCNativeint/.dune-keep b/2.8/containers/CCNativeint/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCNativeint/Infix/index.html b/2.8/containers/CCNativeint/Infix/index.html
new file mode 100644
index 00000000..78750191
--- /dev/null
+++ b/2.8/containers/CCNativeint/Infix/index.html
@@ -0,0 +1,2 @@
+
+Infix (containers.CCNativeint.Infix)
\ No newline at end of file
diff --git a/2.8/containers/CCNativeint/index.html b/2.8/containers/CCNativeint/index.html
new file mode 100644
index 00000000..3531e1d5
--- /dev/null
+++ b/2.8/containers/CCNativeint/index.html
@@ -0,0 +1,2 @@
+
+CCNativeint (containers.CCNativeint)
Module CCNativeint
Nativeint
Helpers for processor-native integers
This module provides operations on the type nativeint of signed 32-bit integers (on 32-bit platforms) or signed 64-bit integers (on 64-bit platforms). This integer type has exactly the same width as that of a pointer type in the C compiler. All arithmetic operations over nativeint are taken modulo 232 or 264 depending on the word size of the architecture.
Performance notice: values of type nativeint occupy more memory space than values of type int, and arithmetic operations on nativeint are generally slower than those on int. Use nativeint only when the application requires the extra bit of precision over the int type.
since
2.1
includemoduletypeofsig ... end
val zero : nativeint
val one : nativeint
val minus_one : nativeint
val neg : nativeint -> nativeint
val add : nativeint -> nativeint -> nativeint
val sub : nativeint -> nativeint -> nativeint
val mul : nativeint -> nativeint -> nativeint
val div : nativeint -> nativeint -> nativeint
val unsigned_div : nativeint -> nativeint -> nativeint
val rem : nativeint -> nativeint -> nativeint
val unsigned_rem : nativeint -> nativeint -> nativeint
val succ : nativeint -> nativeint
val pred : nativeint -> nativeint
val abs : nativeint -> nativeint
val size : int
val max_int : nativeint
val min_int : nativeint
val logand : nativeint -> nativeint -> nativeint
val logor : nativeint -> nativeint -> nativeint
val logxor : nativeint -> nativeint -> nativeint
val lognot : nativeint -> nativeint
val shift_left : nativeint -> int -> nativeint
val shift_right : nativeint -> int -> nativeint
val shift_right_logical : nativeint -> int -> nativeint
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.8/containers/CCOpt/.dune-keep b/2.8/containers/CCOpt/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCOpt/Infix/index.html b/2.8/containers/CCOpt/Infix/index.html
new file mode 100644
index 00000000..33be4766
--- /dev/null
+++ b/2.8/containers/CCOpt/Infix/index.html
@@ -0,0 +1,2 @@
+
+Infix (containers.CCOpt.Infix)
\ No newline at end of file
diff --git a/2.8/containers/CCOpt/index.html b/2.8/containers/CCOpt/index.html
new file mode 100644
index 00000000..8f7b65d7
--- /dev/null
+++ b/2.8/containers/CCOpt/index.html
@@ -0,0 +1,2 @@
+
+CCOpt (containers.CCOpt)
sequence_l [x1; x2; ...; xn] returns Some [y1;y2;...;yn] if every xi is Some yi. Otherwise, if the list contains at least one None, the result is None.
val wrap : ?handler:(exn -> bool) -> ('a->'b) ->'a->'b option
wrap f x calls f x and returns Some y if f x = y. If f x raises any exception, the result is None. This can be useful to wrap functions such as Map.S.find.
parameter handler
the exception handler, which returns true if the exception is to be caught.
val wrap2 : ?handler:(exn -> bool) -> ('a->'b->'c) ->'a->'b->'c option
wrap2 f x y is similar to wrap but for binary functions.
\ No newline at end of file
diff --git a/2.8/containers/CCOrd/.dune-keep b/2.8/containers/CCOrd/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCOrd/Infix/index.html b/2.8/containers/CCOrd/Infix/index.html
new file mode 100644
index 00000000..c8488e04
--- /dev/null
+++ b/2.8/containers/CCOrd/Infix/index.html
@@ -0,0 +1,2 @@
+
+Infix (containers.CCOrd.Infix)
\ No newline at end of file
diff --git a/2.8/containers/CCOrd/index.html b/2.8/containers/CCOrd/index.html
new file mode 100644
index 00000000..fd188628
--- /dev/null
+++ b/2.8/containers/CCOrd/index.html
@@ -0,0 +1,6 @@
+
+CCOrd (containers.CCOrd)
Module CCOrd
Comparisons
type 'a t = 'a->'a-> int
Comparison (total ordering) between two elements, that returns an int.
map f ord is the comparison function that, given objects x and y, projects x and y using f (e.g. using a record field) and then compares those projections with ord. Example: map fst CCInt.compare compares values of type (int * 'a) by their first component.
\ No newline at end of file
diff --git a/2.8/containers/CCPair/.dune-keep b/2.8/containers/CCPair/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCPair/index.html b/2.8/containers/CCPair/index.html
new file mode 100644
index 00000000..ae4e892d
--- /dev/null
+++ b/2.8/containers/CCPair/index.html
@@ -0,0 +1,2 @@
+
+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.8/containers/CCParse/.dune-keep b/2.8/containers/CCParse/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCParse/Infix/index.html b/2.8/containers/CCParse/Infix/index.html
new file mode 100644
index 00000000..f0b62512
--- /dev/null
+++ b/2.8/containers/CCParse/Infix/index.html
@@ -0,0 +1,2 @@
+
+Infix (containers.CCParse.Infix)
a <|> b tries to parse a, and if a fails without consuming any input, backtracks and tries to parse b, otherwise it fails as a. See try_ to ensure a does not consume anything (but it is best to avoid wrapping large parsers with try_).
a <?> msg behaves like a, but if a fails without consuming any input, it fails with msg instead. Useful as the last choice in a series of <|>: a <|> b <|> c <?> "expected a|b|c".
\ No newline at end of file
diff --git a/2.8/containers/CCParse/U/index.html b/2.8/containers/CCParse/U/index.html
new file mode 100644
index 00000000..02741176
--- /dev/null
+++ b/2.8/containers/CCParse/U/index.html
@@ -0,0 +1,2 @@
+
+U (containers.CCParse.U)
Module CCParse.U
val list : ?start:string -> ?stop:string -> ?sep:string ->'at->'a 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.8/containers/CCParse/index.html b/2.8/containers/CCParse/index.html
new file mode 100644
index 00000000..3e0f7abc
--- /dev/null
+++ b/2.8/containers/CCParse/index.html
@@ -0,0 +1,27 @@
+
+CCParse (containers.CCParse)
Module CCParse
Very Simple Parser Combinators
open CCParse;;
+
+type tree = L of int | N of tree * tree;;
+
+let mk_leaf x = L x
+let mk_node x y = N(x,y)
+
+let ptree = fix @@ fun self ->
+ skip_space *>
+ ( (try_ (char '(') *> (pure mk_node <*> self <*> self) <* char ')')
+ <|>
+ (U.int >|= mk_leaf) )
+;;
+
+parse_string_exn ptree "(1 (2 3))" ;;
+parse_string_exn ptree "((1 2) (3 (4 5)))" ;;
Parse a list of words
open Containers.Parse;;
+let p = U.list ~sep:"," U.word;;
+parse_string_exn p "[abc , de, hello ,world ]";;
Stress Test
This makes a list of 100_000 integers, prints it and parses it back.
let p = CCParse.(U.list ~sep:"," U.int);;
+
+let l = CCList.(1 -- 100_000);;
+let l_printed =
+ CCFormat.(to_string (within "[" "]" (list ~sep:(return ",@,") int))) l;;
+
+let l' = CCParse.parse_string_exn p l_printed;;
+
+assert (l=l');;
a <|> b tries to parse a, and if a fails without consuming any input, backtracks and tries to parse b, otherwise it fails as a. See try_ to ensure a does not consume anything (but it is best to avoid wrapping large parsers with try_).
a <?> msg behaves like a, but if a fails without consuming any input, it fails with msg instead. Useful as the last choice in a series of <|>: a <|> b <|> c <?> "expected a|b|c".
Memoize the parser. memo p will behave like p, but when called in a state (read: position in input) it has already processed, memo p returns a result directly. The implementation uses an underlying hashtable. This can be costly in memory, but improve the run time a lot if there is a lot of backtracking involving p.
\ No newline at end of file
diff --git a/2.8/containers/CCPersistentArray/.dune-keep b/2.8/containers/CCPersistentArray/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCPersistentArray/index.html b/2.8/containers/CCPersistentArray/index.html
new file mode 100644
index 00000000..ab1b1c4b
--- /dev/null
+++ b/2.8/containers/CCPersistentArray/index.html
@@ -0,0 +1,2 @@
+
+CCPersistentArray (containers.CCPersistentArray)
Module CCPersistentArray
Persistent Arrays
From the paper by Jean-Christophe Filliâtre, "A persistent Union-Find data structure", see the ps version
make n x returns a persistent array of length n, with x. All the elements of this new array are initially physically equal to x (in the sense of the == predicate). Consequently, if x is mutable, it is shared among all elements of the array, and modifying x through one of the array entries will modify all other entries at the same time.
raises Invalid_argument
if n < 0 or n > Sys.max_array_length. If the value of x is a floating-point number, then the maximum size is only Sys.max_array_length / 2.
Apply the given function to all elements of the array, and return a persistent array initialized by the results of f. In the case of mapi, the function is also given the index of the element. It is equivalent to fun f t -> init (fun i -> f (get t i)).
\ No newline at end of file
diff --git a/2.8/containers/CCPersistentHashtbl/.dune-keep b/2.8/containers/CCPersistentHashtbl/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCPersistentHashtbl/Make/argument-1-H/index.html b/2.8/containers/CCPersistentHashtbl/Make/argument-1-H/index.html
new file mode 100644
index 00000000..5997515a
--- /dev/null
+++ b/2.8/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.8/containers/CCPersistentHashtbl/Make/index.html b/2.8/containers/CCPersistentHashtbl/Make/index.html
new file mode 100644
index 00000000..902e2c18
--- /dev/null
+++ b/2.8/containers/CCPersistentHashtbl/Make/index.html
@@ -0,0 +1,2 @@
+
+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.8/containers/CCPersistentHashtbl/index.html b/2.8/containers/CCPersistentHashtbl/index.html
new file mode 100644
index 00000000..d8ce13e7
--- /dev/null
+++ b/2.8/containers/CCPersistentHashtbl/index.html
@@ -0,0 +1,2 @@
+
+CCPersistentHashtbl (containers.CCPersistentHashtbl)
Module CCPersistentHashtbl
Persistent hash-table on top of OCaml's hashtables
Almost as efficient as the regular Hashtbl type, but with a persistent interface (rewinding changes to get back in the past history). This is mostly useful for backtracking-like uses, or forward uses (never using old values).
This module is not thread-safe.
type 'a sequence = ('a-> unit) -> unit
type 'a printer = Stdlib.Format.formatter ->'a-> unit
\ No newline at end of file
diff --git a/2.8/containers/CCPersistentHashtbl/module-type-HashedType/index.html b/2.8/containers/CCPersistentHashtbl/module-type-HashedType/index.html
new file mode 100644
index 00000000..72f3dd0b
--- /dev/null
+++ b/2.8/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.8/containers/CCPersistentHashtbl/module-type-S/index.html b/2.8/containers/CCPersistentHashtbl/module-type-S/index.html
new file mode 100644
index 00000000..1af8f03f
--- /dev/null
+++ b/2.8/containers/CCPersistentHashtbl/module-type-S/index.html
@@ -0,0 +1,2 @@
+
+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.8/containers/CCPool/.dune-keep b/2.8/containers/CCPool/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCPool/Make/Fut/Infix/index.html b/2.8/containers/CCPool/Make/Fut/Infix/index.html
new file mode 100644
index 00000000..af4de5b3
--- /dev/null
+++ b/2.8/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.8/containers/CCPool/Make/Fut/index.html b/2.8/containers/CCPool/Make/Fut/index.html
new file mode 100644
index 00000000..5d7127c8
--- /dev/null
+++ b/2.8/containers/CCPool/Make/Fut/index.html
@@ -0,0 +1,2 @@
+
+Fut (containers.CCPool.Make.Fut)
Module Make.Fut
Futures
The futures are registration points for callbacks, storing a state, that are executed in the pool using run.
Blocking get: wait for the future to be evaluated, and get the value, or the exception that failed the future is returned. Raise e if the future failed with e.
Attach a handler to be called upon failure. The handler should not call any function on the future. Might be evaluated now if the future is already done.
Attach a handler to be called when the future is evaluated. The handler should not call functions on the future. Might be evaluated now if the future is already done.
\ No newline at end of file
diff --git a/2.8/containers/CCPool/Make/argument-1-P/index.html b/2.8/containers/CCPool/Make/argument-1-P/index.html
new file mode 100644
index 00000000..c5e0c55c
--- /dev/null
+++ b/2.8/containers/CCPool/Make/argument-1-P/index.html
@@ -0,0 +1,2 @@
+
+1-P (containers.CCPool.Make.1-P)
Parameter Make.1-P
val max_size : int
Maximum number of threads in the pool.
\ No newline at end of file
diff --git a/2.8/containers/CCPool/Make/index.html b/2.8/containers/CCPool/Make/index.html
new file mode 100644
index 00000000..a4bbfd58
--- /dev/null
+++ b/2.8/containers/CCPool/Make/index.html
@@ -0,0 +1,2 @@
+
+Make (containers.CCPool.Make)
\ No newline at end of file
diff --git a/2.8/containers/CCPool/index.html b/2.8/containers/CCPool/index.html
new file mode 100644
index 00000000..a7bfcd02
--- /dev/null
+++ b/2.8/containers/CCPool/index.html
@@ -0,0 +1,2 @@
+
+CCPool (containers.CCPool)
\ No newline at end of file
diff --git a/2.8/containers/CCPool/module-type-PARAM/index.html b/2.8/containers/CCPool/module-type-PARAM/index.html
new file mode 100644
index 00000000..657076c3
--- /dev/null
+++ b/2.8/containers/CCPool/module-type-PARAM/index.html
@@ -0,0 +1,2 @@
+
+PARAM (containers.CCPool.PARAM)
Module type CCPool.PARAM
val max_size : int
Maximum number of threads in the pool.
\ No newline at end of file
diff --git a/2.8/containers/CCRAL/.dune-keep b/2.8/containers/CCRAL/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCRAL/Infix/index.html b/2.8/containers/CCRAL/Infix/index.html
new file mode 100644
index 00000000..76ca7664
--- /dev/null
+++ b/2.8/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.8/containers/CCRAL/index.html b/2.8/containers/CCRAL/index.html
new file mode 100644
index 00000000..ab36788c
--- /dev/null
+++ b/2.8/containers/CCRAL/index.html
@@ -0,0 +1,2 @@
+
+CCRAL (containers.CCRAL)
Module CCRAL
Random-Access Lists
This is an OCaml implementation of Okasaki's paper "Purely Functional Random Access Lists". It defines a list-like data structure with O(1) cons/tail operations, and O(log(n)) lookup/modification operations.
\ No newline at end of file
diff --git a/2.8/containers/CCRandom/.dune-keep b/2.8/containers/CCRandom/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCRandom/index.html b/2.8/containers/CCRandom/index.html
new file mode 100644
index 00000000..01499c52
--- /dev/null
+++ b/2.8/containers/CCRandom/index.html
@@ -0,0 +1,7 @@
+
+CCRandom (containers.CCRandom)
Module CCRandom
Random Generators
includemoduletypeofsig ... end
val init : int -> unit
val full_init : int array -> unit
val self_init : unit -> unit
val bits : unit -> int
val int : int -> int
val int32 : Stdlib.Int32.t -> Stdlib.Int32.t
val nativeint : Stdlib.Nativeint.t -> Stdlib.Nativeint.t
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
val sample_without_duplicates : cmp:('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.
parameter max:
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!
Using a random state (possibly the one in argument) run a generator.
\ No newline at end of file
diff --git a/2.8/containers/CCRef/.dune-keep b/2.8/containers/CCRef/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCRef/index.html b/2.8/containers/CCRef/index.html
new file mode 100644
index 00000000..8ab1a6f2
--- /dev/null
+++ b/2.8/containers/CCRef/index.html
@@ -0,0 +1,2 @@
+
+CCRef (containers.CCRef)
Module CCRef
References
since
0.9
type 'a printer = Stdlib.Format.formatter ->'a-> unit
\ No newline at end of file
diff --git a/2.8/containers/CCResult/.dune-keep b/2.8/containers/CCResult/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCResult/Infix/index.html b/2.8/containers/CCResult/Infix/index.html
new file mode 100644
index 00000000..91922698
--- /dev/null
+++ b/2.8/containers/CCResult/Infix/index.html
@@ -0,0 +1,2 @@
+
+Infix (containers.CCResult.Infix)
Module CCResult.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.
Let operators on OCaml >= 4.08.0, nothing otherwise
\ No newline at end of file
diff --git a/2.8/containers/CCResult/Traverse/argument-1-M/index.html b/2.8/containers/CCResult/Traverse/argument-1-M/index.html
new file mode 100644
index 00000000..cd198849
--- /dev/null
+++ b/2.8/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.8/containers/CCResult/Traverse/index.html b/2.8/containers/CCResult/Traverse/index.html
new file mode 100644
index 00000000..f455d5ab
--- /dev/null
+++ b/2.8/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.8/containers/CCResult/index.html b/2.8/containers/CCResult/index.html
new file mode 100644
index 00000000..bcdb9fb7
--- /dev/null
+++ b/2.8/containers/CCResult/index.html
@@ -0,0 +1,2 @@
+
+CCResult (containers.CCResult)
Module CCResult
Error Monad
Uses the new "result" type from OCaml 4.03.
since
0.16
type 'a sequence = ('a-> unit) -> unit
deprecated
use 'a iter instead
type 'a iter = ('a-> unit) -> unit
Fast internal iterator.
since
2.8
type 'a equal = 'a->'a-> bool
type 'a ord = 'a->'a-> int
type 'a printer = Stdlib.Format.formatter ->'a-> unit
Basics
type (+'good, +'bad) t = ('good, 'bad) Stdlib.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 flatten_l : ('a, 'err) t list -> ('a list, 'err) t
Same as map_l id: returns Ok [x1;…;xn] if l=[Ok x1; …; Ok xn], or the first error otherwise.
since
2.7
val map_l : ('a-> ('b, 'err) t) ->'a list -> ('b list, 'err) t
map_l f [a1; ...; an] applies the function f to a1, ..., an , and, in case of success for every element, returns the list of Ok-value. Otherwise, it fails and returns the first error encountered. Tail-recursive.
val fold_l : ('b->'a-> ('b, 'err) t) ->'b->'a list -> ('b, 'err) t
val fold_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.8/containers/CCResult/module-type-MONAD/index.html b/2.8/containers/CCResult/module-type-MONAD/index.html
new file mode 100644
index 00000000..62dd06d6
--- /dev/null
+++ b/2.8/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.8/containers/CCRingBuffer/.dune-keep b/2.8/containers/CCRingBuffer/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCRingBuffer/Array/Byte/index.html b/2.8/containers/CCRingBuffer/Array/Byte/index.html
new file mode 100644
index 00000000..1ff7c76f
--- /dev/null
+++ b/2.8/containers/CCRingBuffer/Array/Byte/index.html
@@ -0,0 +1,2 @@
+
+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.8/containers/CCRingBuffer/Array/Make/argument-1-Elt/index.html b/2.8/containers/CCRingBuffer/Array/Make/argument-1-Elt/index.html
new file mode 100644
index 00000000..1e44d35e
--- /dev/null
+++ b/2.8/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.8/containers/CCRingBuffer/Array/Make/index.html b/2.8/containers/CCRingBuffer/Array/Make/index.html
new file mode 100644
index 00000000..343e458d
--- /dev/null
+++ b/2.8/containers/CCRingBuffer/Array/Make/index.html
@@ -0,0 +1,2 @@
+
+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.8/containers/CCRingBuffer/Array/index.html b/2.8/containers/CCRingBuffer/Array/index.html
new file mode 100644
index 00000000..44ecbe65
--- /dev/null
+++ b/2.8/containers/CCRingBuffer/Array/index.html
@@ -0,0 +1,2 @@
+
+Array (containers.CCRingBuffer.Array)
\ No newline at end of file
diff --git a/2.8/containers/CCRingBuffer/Array/module-type-S/index.html b/2.8/containers/CCRingBuffer/Array/module-type-S/index.html
new file mode 100644
index 00000000..85232933
--- /dev/null
+++ b/2.8/containers/CCRingBuffer/Array/module-type-S/index.html
@@ -0,0 +1,2 @@
+
+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.8/containers/CCRingBuffer/Byte/index.html b/2.8/containers/CCRingBuffer/Byte/index.html
new file mode 100644
index 00000000..89845dee
--- /dev/null
+++ b/2.8/containers/CCRingBuffer/Byte/index.html
@@ -0,0 +1,2 @@
+
+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.
\ No newline at end of file
diff --git a/2.8/containers/CCRingBuffer/Make/Array/index.html b/2.8/containers/CCRingBuffer/Make/Array/index.html
new file mode 100644
index 00000000..ecdeffcf
--- /dev/null
+++ b/2.8/containers/CCRingBuffer/Make/Array/index.html
@@ -0,0 +1,2 @@
+
+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.8/containers/CCRingBuffer/Make/argument-1-X/index.html b/2.8/containers/CCRingBuffer/Make/argument-1-X/index.html
new file mode 100644
index 00000000..f7ab6974
--- /dev/null
+++ b/2.8/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.8/containers/CCRingBuffer/Make/index.html b/2.8/containers/CCRingBuffer/Make/index.html
new file mode 100644
index 00000000..c88a4b4d
--- /dev/null
+++ b/2.8/containers/CCRingBuffer/Make/index.html
@@ -0,0 +1,2 @@
+
+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.
\ No newline at end of file
diff --git a/2.8/containers/CCRingBuffer/MakeFromArray/argument-1-A/index.html b/2.8/containers/CCRingBuffer/MakeFromArray/argument-1-A/index.html
new file mode 100644
index 00000000..36e5e711
--- /dev/null
+++ b/2.8/containers/CCRingBuffer/MakeFromArray/argument-1-A/index.html
@@ -0,0 +1,2 @@
+
+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.8/containers/CCRingBuffer/MakeFromArray/index.html b/2.8/containers/CCRingBuffer/MakeFromArray/index.html
new file mode 100644
index 00000000..7a458889
--- /dev/null
+++ b/2.8/containers/CCRingBuffer/MakeFromArray/index.html
@@ -0,0 +1,2 @@
+
+MakeFromArray (containers.CCRingBuffer.MakeFromArray)
Module CCRingBuffer.MakeFromArray
Makes a ring buffer module with the given array type
create size creates a new bounded buffer with given size. The underlying array is allocated immediately and no further (large) allocation will happen from now on.
blit_from buf from_buf o len copies the slice o, ... o + len - 1 from an input buffer from_buf to the end of the buffer. If the slice is too large for the buffer, only the last part of the array will be copied.
\ No newline at end of file
diff --git a/2.8/containers/CCRingBuffer/index.html b/2.8/containers/CCRingBuffer/index.html
new file mode 100644
index 00000000..1e44e247
--- /dev/null
+++ b/2.8/containers/CCRingBuffer/index.html
@@ -0,0 +1,2 @@
+
+CCRingBuffer (containers.CCRingBuffer)
Module CCRingBuffer
Circular Buffer (Deque)
Useful for IO, or as a bounded-size alternative to Queue when batch operations are needed.
status: experimental
Change in the API to provide only a bounded buffer since 1.3
\ No newline at end of file
diff --git a/2.8/containers/CCRingBuffer/module-type-S/Array/index.html b/2.8/containers/CCRingBuffer/module-type-S/Array/index.html
new file mode 100644
index 00000000..24eae5ee
--- /dev/null
+++ b/2.8/containers/CCRingBuffer/module-type-S/Array/index.html
@@ -0,0 +1,2 @@
+
+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.8/containers/CCRingBuffer/module-type-S/index.html b/2.8/containers/CCRingBuffer/module-type-S/index.html
new file mode 100644
index 00000000..ebc5a615
--- /dev/null
+++ b/2.8/containers/CCRingBuffer/module-type-S/index.html
@@ -0,0 +1,2 @@
+
+S (containers.CCRingBuffer.S)
Module type CCRingBuffer.S
Ring Buffer
The abstract ring buffer type, made concrete by choice of ARRAY module implementation
create size creates a new bounded buffer with given size. The underlying array is allocated immediately and no further (large) allocation will happen from now on.
blit_from buf from_buf o len copies the slice o, ... o + len - 1 from an input buffer from_buf to the end of the buffer. If the slice is too large for the buffer, only the last part of the array will be copied.
\ No newline at end of file
diff --git a/2.8/containers/CCSemaphore/.dune-keep b/2.8/containers/CCSemaphore/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCSemaphore/index.html b/2.8/containers/CCSemaphore/index.html
new file mode 100644
index 00000000..4914d009
--- /dev/null
+++ b/2.8/containers/CCSemaphore/index.html
@@ -0,0 +1,2 @@
+
+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.8/containers/CCSet/.dune-keep b/2.8/containers/CCSet/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCSet/index.html b/2.8/containers/CCSet/index.html
new file mode 100644
index 00000000..e5643f4b
--- /dev/null
+++ b/2.8/containers/CCSet/index.html
@@ -0,0 +1,2 @@
+
+CCSet (containers.CCSet)
Module CCSet
Wrapper around Set
since
0.9
type 'a sequence = ('a-> unit) -> unit
deprecated
use 'a iter instead
type 'a iter = ('a-> unit) -> unit
Fast internal iterator.
since
2.8
type 'a printer = Stdlib.Format.formatter ->'a-> unit
module Make : functor (O : Stdlib.Set.OrderedType) ->SwithtypeMake.t = Stdlib.Set.Make(O).t andtypeMake.elt = O.t
\ No newline at end of file
diff --git a/2.8/containers/CCSet/module-type-S/index.html b/2.8/containers/CCSet/module-type-S/index.html
new file mode 100644
index 00000000..ad3dca68
--- /dev/null
+++ b/2.8/containers/CCSet/module-type-S/index.html
@@ -0,0 +1,2 @@
+
+S (containers.CCSet.S)
val pp : ?start:string -> ?stop:string -> ?sep:string ->eltprinter->tprinter
Print the set.
\ No newline at end of file
diff --git a/2.8/containers/CCSexp/.dune-keep b/2.8/containers/CCSexp/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCSexp/Decoder/index.html b/2.8/containers/CCSexp/Decoder/index.html
new file mode 100644
index 00000000..146fd3ea
--- /dev/null
+++ b/2.8/containers/CCSexp/Decoder/index.html
@@ -0,0 +1,2 @@
+
+Decoder (containers.CCSexp.Decoder)
\ No newline at end of file
diff --git a/2.8/containers/CCSexp/Make/Decoder/index.html b/2.8/containers/CCSexp/Make/Decoder/index.html
new file mode 100644
index 00000000..0d78496b
--- /dev/null
+++ b/2.8/containers/CCSexp/Make/Decoder/index.html
@@ -0,0 +1,2 @@
+
+Decoder (containers.CCSexp.Make.Decoder)
\ No newline at end of file
diff --git a/2.8/containers/CCSexp/Make/argument-1-Sexp/index.html b/2.8/containers/CCSexp/Make/argument-1-Sexp/index.html
new file mode 100644
index 00000000..e2490dde
--- /dev/null
+++ b/2.8/containers/CCSexp/Make/argument-1-Sexp/index.html
@@ -0,0 +1,2 @@
+
+1-Sexp (containers.CCSexp.Make.1-Sexp)
val match_ : t-> atom:(string ->'a) -> list:(t list ->'a) ->'a
\ No newline at end of file
diff --git a/2.8/containers/CCSexp/Make/index.html b/2.8/containers/CCSexp/Make/index.html
new file mode 100644
index 00000000..588ee7ab
--- /dev/null
+++ b/2.8/containers/CCSexp/Make/index.html
@@ -0,0 +1,2 @@
+
+Make (containers.CCSexp.Make)
Module CCSexp.Make
Functorized operations
This builds a parser and printer for S-expressions represented as in the Sexp argument.
Parse a S-expression from the given channel. Can read more data than necessary, so don't use this if you need finer-grained control (e.g. to read something else after the S-exp).
\ No newline at end of file
diff --git a/2.8/containers/CCSexp/index.html b/2.8/containers/CCSexp/index.html
new file mode 100644
index 00000000..970a21b3
--- /dev/null
+++ b/2.8/containers/CCSexp/index.html
@@ -0,0 +1,2 @@
+
+CCSexp (containers.CCSexp)
Parse a S-expression from the given channel. Can read more data than necessary, so don't use this if you need finer-grained control (e.g. to read something else after the S-exp).
\ No newline at end of file
diff --git a/2.8/containers/CCSexp/module-type-S/Decoder/index.html b/2.8/containers/CCSexp/module-type-S/Decoder/index.html
new file mode 100644
index 00000000..d17b0399
--- /dev/null
+++ b/2.8/containers/CCSexp/module-type-S/Decoder/index.html
@@ -0,0 +1,2 @@
+
+Decoder (containers.CCSexp.S.Decoder)
\ No newline at end of file
diff --git a/2.8/containers/CCSexp/module-type-S/index.html b/2.8/containers/CCSexp/module-type-S/index.html
new file mode 100644
index 00000000..cdab64d5
--- /dev/null
+++ b/2.8/containers/CCSexp/module-type-S/index.html
@@ -0,0 +1,2 @@
+
+S (containers.CCSexp.S)
Parse a S-expression from the given channel. Can read more data than necessary, so don't use this if you need finer-grained control (e.g. to read something else after the S-exp).
\ No newline at end of file
diff --git a/2.8/containers/CCSexp/module-type-SEXP/index.html b/2.8/containers/CCSexp/module-type-SEXP/index.html
new file mode 100644
index 00000000..37e6c79d
--- /dev/null
+++ b/2.8/containers/CCSexp/module-type-SEXP/index.html
@@ -0,0 +1,2 @@
+
+SEXP (containers.CCSexp.SEXP)
val match_ : t-> atom:(string ->'a) -> list:(t list ->'a) ->'a
\ No newline at end of file
diff --git a/2.8/containers/CCSexp_intf/.dune-keep b/2.8/containers/CCSexp_intf/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCSexp_intf/index.html b/2.8/containers/CCSexp_intf/index.html
new file mode 100644
index 00000000..4c5b6ec3
--- /dev/null
+++ b/2.8/containers/CCSexp_intf/index.html
@@ -0,0 +1,2 @@
+
+CCSexp_intf (containers.CCSexp_intf)
\ No newline at end of file
diff --git a/2.8/containers/CCSexp_intf/module-type-S/Decoder/index.html b/2.8/containers/CCSexp_intf/module-type-S/Decoder/index.html
new file mode 100644
index 00000000..d830c74e
--- /dev/null
+++ b/2.8/containers/CCSexp_intf/module-type-S/Decoder/index.html
@@ -0,0 +1,2 @@
+
+Decoder (containers.CCSexp_intf.S.Decoder)
\ No newline at end of file
diff --git a/2.8/containers/CCSexp_intf/module-type-S/index.html b/2.8/containers/CCSexp_intf/module-type-S/index.html
new file mode 100644
index 00000000..dd2b9f36
--- /dev/null
+++ b/2.8/containers/CCSexp_intf/module-type-S/index.html
@@ -0,0 +1,2 @@
+
+S (containers.CCSexp_intf.S)
Parse a S-expression from the given channel. Can read more data than necessary, so don't use this if you need finer-grained control (e.g. to read something else after the S-exp).
val parse_chan_gen : Stdlib.in_channel ->tor_errorgen
Parse a channel into a generator of S-expressions.
val parse_chan_list : Stdlib.in_channel ->t list or_error
\ No newline at end of file
diff --git a/2.8/containers/CCSexp_intf/module-type-SEXP/index.html b/2.8/containers/CCSexp_intf/module-type-SEXP/index.html
new file mode 100644
index 00000000..984f0b18
--- /dev/null
+++ b/2.8/containers/CCSexp_intf/module-type-SEXP/index.html
@@ -0,0 +1,2 @@
+
+SEXP (containers.CCSexp_intf.SEXP)
val match_ : t-> atom:(string ->'a) -> list:(t list ->'a) ->'a
\ No newline at end of file
diff --git a/2.8/containers/CCSexp_lex/.dune-keep b/2.8/containers/CCSexp_lex/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCSexp_lex/index.html b/2.8/containers/CCSexp_lex/index.html
new file mode 100644
index 00000000..d36345bf
--- /dev/null
+++ b/2.8/containers/CCSexp_lex/index.html
@@ -0,0 +1,2 @@
+
+CCSexp_lex (containers.CCSexp_lex)
Module CCSexp_lex
type token =
| ATOMof string
| LIST_OPEN
| LIST_CLOSE
| SEXP_COMMENT
| EOI
exceptionErrorof int * int * string
val error : Stdlib.Lexing.lexbuf -> string ->'a
type unescape_state =
| Not_escaped
| Escaped
| Escaped_int_1of int
| Escaped_int_2of int
val char_equal : char -> char -> bool
val remove_quotes : Stdlib.Lexing.lexbuf -> string -> string
val __ocaml_lex_token_rec : Stdlib.Lexing.lexbuf -> int ->token
\ No newline at end of file
diff --git a/2.8/containers/CCShimsArrayLabels_/.dune-keep b/2.8/containers/CCShimsArrayLabels_/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCShimsArrayLabels_/Floatarray/index.html b/2.8/containers/CCShimsArrayLabels_/Floatarray/index.html
new file mode 100644
index 00000000..51bfa3d0
--- /dev/null
+++ b/2.8/containers/CCShimsArrayLabels_/Floatarray/index.html
@@ -0,0 +1,2 @@
+
+Floatarray (containers.CCShimsArrayLabels_.Floatarray)
Module CCShimsArrayLabels_.Floatarray
val create : int -> floatarray
val length : floatarray -> int
val get : floatarray -> int -> float
val set : floatarray -> int -> float -> unit
val unsafe_get : floatarray -> int -> float
val unsafe_set : floatarray -> int -> float -> unit
\ No newline at end of file
diff --git a/2.8/containers/CCShimsArrayLabels_/index.html b/2.8/containers/CCShimsArrayLabels_/index.html
new file mode 100644
index 00000000..c04d6fb4
--- /dev/null
+++ b/2.8/containers/CCShimsArrayLabels_/index.html
@@ -0,0 +1,2 @@
+
+CCShimsArrayLabels_ (containers.CCShimsArrayLabels_)
\ No newline at end of file
diff --git a/2.8/containers/CCShimsArray_/.dune-keep b/2.8/containers/CCShimsArray_/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCShimsArray_/index.html b/2.8/containers/CCShimsArray_/index.html
new file mode 100644
index 00000000..8dccf37d
--- /dev/null
+++ b/2.8/containers/CCShimsArray_/index.html
@@ -0,0 +1,2 @@
+
+CCShimsArray_ (containers.CCShimsArray_)
Module CCShimsArray_
include Stdlib.Array
type 'a t = 'a array
val length : 'a array -> int
val get : 'a array -> int ->'a
val set : 'a array -> int ->'a-> unit
val make : int ->'a->'a array
val create : int ->'a->'a array
val create_float : int -> float array
val make_float : int -> float array
val init : int -> (int ->'a) ->'a array
val make_matrix : int -> int ->'a->'a array array
val create_matrix : int -> int ->'a->'a array array
val append : 'a array ->'a array ->'a array
val concat : 'a array list ->'a array
val sub : 'a array -> int -> int ->'a array
val copy : 'a array ->'a array
val fill : 'a array -> int -> int ->'a-> unit
val blit : 'a array -> int ->'a array -> int -> int -> unit
val to_list : 'a array ->'a list
val of_list : 'a list ->'a array
val iter : ('a-> unit) ->'a array -> unit
val iteri : (int ->'a-> unit) ->'a array -> unit
val map : ('a->'b) ->'a array ->'b array
val mapi : (int ->'a->'b) ->'a array ->'b array
val fold_left : ('a->'b->'a) ->'a->'b array ->'a
val fold_right : ('b->'a->'a) ->'b array ->'a->'a
val iter2 : ('a->'b-> unit) ->'a array ->'b array -> unit
val map2 : ('a->'b->'c) ->'a array ->'b array ->'c array
val for_all : ('a-> bool) ->'a array -> bool
val exists : ('a-> bool) ->'a array -> bool
val mem : 'a->'a array -> bool
val memq : 'a->'a array -> bool
val sort : ('a->'a-> int) ->'a array -> unit
val stable_sort : ('a->'a-> int) ->'a array -> unit
val fast_sort : ('a->'a-> int) ->'a array -> unit
val to_seq : 'a array ->'a Stdlib.Seq.t
val to_seqi : 'a array -> (int * 'a) Stdlib.Seq.t
val of_seq : 'a Stdlib.Seq.t ->'a array
val unsafe_get : 'a array -> int ->'a
val unsafe_set : 'a array -> int ->'a-> unit
module Floatarray = Stdlib__array.Floatarray
\ No newline at end of file
diff --git a/2.8/containers/CCShimsFormat_/.dune-keep b/2.8/containers/CCShimsFormat_/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCShimsFormat_/index.html b/2.8/containers/CCShimsFormat_/index.html
new file mode 100644
index 00000000..2cbfbc62
--- /dev/null
+++ b/2.8/containers/CCShimsFormat_/index.html
@@ -0,0 +1,2 @@
+
+CCShimsFormat_ (containers.CCShimsFormat_)
Module CCShimsFormat_
val pp_open_tag : Stdlib.Format.formatter -> Stdlib.Format.tag -> unit
val pp_close_tag : Stdlib.Format.formatter -> unit -> unit
val pp_get_formatter_tag_functions : Stdlib.Format.formatter -> unit -> Stdlib.Format.formatter_tag_functions
val pp_set_formatter_tag_functions : Stdlib.Format.formatter -> Stdlib.Format.formatter_tag_functions -> unit
\ No newline at end of file
diff --git a/2.8/containers/CCShimsFun_/.dune-keep b/2.8/containers/CCShimsFun_/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCShimsFun_/index.html b/2.8/containers/CCShimsFun_/index.html
new file mode 100644
index 00000000..bdb8480f
--- /dev/null
+++ b/2.8/containers/CCShimsFun_/index.html
@@ -0,0 +1,2 @@
+
+CCShimsFun_ (containers.CCShimsFun_)
Module CCShimsFun_
includemoduletypeof Stdlib.Fun
val id : 'a->'a
val const : 'a->'b->'a
val flip : ('a->'b->'c) ->'b->'a->'c
val negate : ('a-> bool) ->'a-> bool
val protect : finally:(unit -> unit) -> (unit ->'a) ->'a
exceptionFinally_raisedof exn
\ No newline at end of file
diff --git a/2.8/containers/CCShimsList_/.dune-keep b/2.8/containers/CCShimsList_/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCShimsList_/index.html b/2.8/containers/CCShimsList_/index.html
new file mode 100644
index 00000000..14823e7b
--- /dev/null
+++ b/2.8/containers/CCShimsList_/index.html
@@ -0,0 +1,2 @@
+
+CCShimsList_ (containers.CCShimsList_)
Module CCShimsList_
include Stdlib.List
type 'a t = 'a list =
| ([])
| (::)of'a * 'a list
val length : 'a list -> int
val compare_lengths : 'a list ->'b list -> int
val compare_length_with : 'a list -> int -> int
val cons : 'a->'a list ->'a list
val hd : 'a list ->'a
val tl : 'a list ->'a list
val nth : 'a list -> int ->'a
val nth_opt : 'a list -> int ->'a option
val rev : 'a list ->'a list
val init : int -> (int ->'a) ->'a list
val append : 'a list ->'a list ->'a list
val rev_append : 'a list ->'a list ->'a list
val concat : 'a list list ->'a list
val flatten : 'a list list ->'a list
val iter : ('a-> unit) ->'a list -> unit
val iteri : (int ->'a-> unit) ->'a list -> unit
val map : ('a->'b) ->'a list ->'b list
val mapi : (int ->'a->'b) ->'a list ->'b list
val rev_map : ('a->'b) ->'a list ->'b list
val filter_map : ('a->'b option) ->'a list ->'b list
val 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
val to_seq : 'a list ->'a Stdlib.Seq.t
val of_seq : 'a Stdlib.Seq.t ->'a list
\ No newline at end of file
diff --git a/2.8/containers/CCShimsMkLet_/.dune-keep b/2.8/containers/CCShimsMkLet_/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCShimsMkLet_/Make/argument-1-X/index.html b/2.8/containers/CCShimsMkLet_/Make/argument-1-X/index.html
new file mode 100644
index 00000000..4afc5445
--- /dev/null
+++ b/2.8/containers/CCShimsMkLet_/Make/argument-1-X/index.html
@@ -0,0 +1,2 @@
+
+1-X (containers.CCShimsMkLet_.Make.1-X)
\ No newline at end of file
diff --git a/2.8/containers/CCShimsMkLet_/Make/index.html b/2.8/containers/CCShimsMkLet_/Make/index.html
new file mode 100644
index 00000000..0ee1eff5
--- /dev/null
+++ b/2.8/containers/CCShimsMkLet_/Make/index.html
@@ -0,0 +1,2 @@
+
+Make (containers.CCShimsMkLet_.Make)
\ No newline at end of file
diff --git a/2.8/containers/CCShimsMkLet_/Make2/argument-1-X/index.html b/2.8/containers/CCShimsMkLet_/Make2/argument-1-X/index.html
new file mode 100644
index 00000000..4394cfe7
--- /dev/null
+++ b/2.8/containers/CCShimsMkLet_/Make2/argument-1-X/index.html
@@ -0,0 +1,2 @@
+
+1-X (containers.CCShimsMkLet_.Make2.1-X)
val monoid_product : ('a, 'e) t-> ('b, 'e) t-> ('a * 'b, 'e) t
val (>>=) : ('a, 'e) t-> ('a-> ('b, 'e) t) -> ('b, 'e) t
\ No newline at end of file
diff --git a/2.8/containers/CCShimsMkLet_/Make2/index.html b/2.8/containers/CCShimsMkLet_/Make2/index.html
new file mode 100644
index 00000000..4800ffce
--- /dev/null
+++ b/2.8/containers/CCShimsMkLet_/Make2/index.html
@@ -0,0 +1,2 @@
+
+Make2 (containers.CCShimsMkLet_.Make2)
\ No newline at end of file
diff --git a/2.8/containers/CCShimsMkLet_/index.html b/2.8/containers/CCShimsMkLet_/index.html
new file mode 100644
index 00000000..9348b902
--- /dev/null
+++ b/2.8/containers/CCShimsMkLet_/index.html
@@ -0,0 +1,2 @@
+
+CCShimsMkLet_ (containers.CCShimsMkLet_)
\ No newline at end of file
diff --git a/2.8/containers/CCShimsMkLet_/module-type-S/index.html b/2.8/containers/CCShimsMkLet_/module-type-S/index.html
new file mode 100644
index 00000000..92cf4db6
--- /dev/null
+++ b/2.8/containers/CCShimsMkLet_/module-type-S/index.html
@@ -0,0 +1,2 @@
+
+S (containers.CCShimsMkLet_.S)
\ No newline at end of file
diff --git a/2.8/containers/CCShimsMkLet_/module-type-S2/index.html b/2.8/containers/CCShimsMkLet_/module-type-S2/index.html
new file mode 100644
index 00000000..ee80ec62
--- /dev/null
+++ b/2.8/containers/CCShimsMkLet_/module-type-S2/index.html
@@ -0,0 +1,2 @@
+
+S2 (containers.CCShimsMkLet_.S2)
\ No newline at end of file
diff --git a/2.8/containers/CCShims_/.dune-keep b/2.8/containers/CCShims_/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCShims_/index.html b/2.8/containers/CCShims_/index.html
new file mode 100644
index 00000000..f7db8e46
--- /dev/null
+++ b/2.8/containers/CCShims_/index.html
@@ -0,0 +1,2 @@
+
+CCShims_ (containers.CCShims_)
Module CCShims_
module Stdlib = Stdlib
\ No newline at end of file
diff --git a/2.8/containers/CCSimple_queue/.dune-keep b/2.8/containers/CCSimple_queue/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCSimple_queue/Infix/index.html b/2.8/containers/CCSimple_queue/Infix/index.html
new file mode 100644
index 00000000..a7899023
--- /dev/null
+++ b/2.8/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.8/containers/CCSimple_queue/index.html b/2.8/containers/CCSimple_queue/index.html
new file mode 100644
index 00000000..5e3f611a
--- /dev/null
+++ b/2.8/containers/CCSimple_queue/index.html
@@ -0,0 +1,2 @@
+
+CCSimple_queue (containers.CCSimple_queue)
Module CCSimple_queue
Functional queues (fifo)
type 'a sequence = ('a-> unit) -> unit
deprecated
use 'a iter instead
type 'a iter = ('a-> unit) -> unit
Fast internal iterator.
since
2.8
type 'a printer = Stdlib.Format.formatter ->'a-> unit
type 'a klist = unit -> [ `Nil | `Cons of 'a * 'aklist ]
\ No newline at end of file
diff --git a/2.8/containers/CCString/.dune-keep b/2.8/containers/CCString/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCString/Find/index.html b/2.8/containers/CCString/Find/index.html
new file mode 100644
index 00000000..17af4ee8
--- /dev/null
+++ b/2.8/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.
parameter start
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.
parameter start
right-offset in string at which we start.
\ No newline at end of file
diff --git a/2.8/containers/CCString/Split/index.html b/2.8/containers/CCString/Split/index.html
new file mode 100644
index 00000000..c1d2e564
--- /dev/null
+++ b/2.8/containers/CCString/Split/index.html
@@ -0,0 +1,2 @@
+
+Split (containers.CCString.Split)
Module CCString.Split
type drop_if_empty = {
first : bool;
last : bool;
}
Specification of what to do with empty blocks, as in split ~by:"-" "-a-b-".
{first=false; last=false} will return ""; "a"; "b"; ""
{first=true; last=false} will return "a"; "b" ""
{first=false; last=true} will return ""; "a"; "b"
{first=true; last=true} will return "a"; "b"
The default value of all remaining functions is Drop_none.
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.
raises Not_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.
raises Not_found
if by is not part of the string.
since
0.16
\ No newline at end of file
diff --git a/2.8/containers/CCString/Sub/index.html b/2.8/containers/CCString/Sub/index.html
new file mode 100644
index 00000000..7da0202e
--- /dev/null
+++ b/2.8/containers/CCString/Sub/index.html
@@ -0,0 +1,2 @@
+
+Sub (containers.CCString.Sub)
\ No newline at end of file
diff --git a/2.8/containers/CCString/index.html b/2.8/containers/CCString/index.html
new file mode 100644
index 00000000..c7ca625d
--- /dev/null
+++ b/2.8/containers/CCString/index.html
@@ -0,0 +1,2 @@
+
+CCString (containers.CCString)
Module CCString
Basic String Utils
type 'a sequence = ('a-> unit) -> unit
deprecated
use 'a iter instead
type 'a iter = ('a-> unit) -> unit
Fast internal iterator.
since
2.8
type 'a gen = unit ->'a option
type 'a klist = unit -> [ `Nil | `Cons of 'a * 'aklist ]
replace ~sub ~by s replaces some occurrences of sub by by in s.
parameter which
decides whether the occurrences to replace are:
`Left first occurrence from the left (beginning).
`Right first occurrence from the right (end).
`All all occurrences (default).
raises Invalid_argument
if sub = "".
since
0.14
val is_sub : sub:string -> int -> string -> int -> sub_len:int -> bool
is_sub ~sub i s j ~sub_len returns true iff the substring of sub starting at position i and of length sub_len is a substring of s starting at position j.
val repeat : string -> int -> string
The same string, repeated n times.
val prefix : pre:string -> string -> bool
prefix ~pre s returns true iff pre is a prefix of s.
val suffix : suf:string -> string -> bool
suffix ~suf s returns true iff suf is a suffix of s.
since
0.7
val chop_prefix : pre:string -> string -> string option
chop_prefix ~pre s removes pre from s if pre really is a prefix of s, returns None otherwise.
since
0.17
val chop_suffix : suf:string -> string -> string option
chop_suffix ~suf s removes suf from s if suf really is a suffix of s, returns None otherwise.
since
0.17
val take : int -> string -> string
take n s keeps only the n first chars of s.
since
0.17
val drop : int -> string -> string
drop n s removes the n first chars of s.
since
0.17
val take_drop : int -> string -> string * string
take_drop n s = take n s, drop n s.
since
0.17
val lines : string -> string list
lines s returns a list of the lines of s (splits along '\n').
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.8/containers/CCString/module-type-S/index.html b/2.8/containers/CCString/module-type-S/index.html
new file mode 100644
index 00000000..e9cceaec
--- /dev/null
+++ b/2.8/containers/CCString/module-type-S/index.html
@@ -0,0 +1,2 @@
+
+S (containers.CCString.S)
\ No newline at end of file
diff --git a/2.8/containers/CCStringLabels/.dune-keep b/2.8/containers/CCStringLabels/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCStringLabels/Find/index.html b/2.8/containers/CCStringLabels/Find/index.html
new file mode 100644
index 00000000..e5c390d6
--- /dev/null
+++ b/2.8/containers/CCStringLabels/Find/index.html
@@ -0,0 +1,2 @@
+
+Find (containers.CCStringLabels.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.
parameter start
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.
parameter start
right-offset in string at which we start.
\ No newline at end of file
diff --git a/2.8/containers/CCStringLabels/Split/index.html b/2.8/containers/CCStringLabels/Split/index.html
new file mode 100644
index 00000000..e78a5482
--- /dev/null
+++ b/2.8/containers/CCStringLabels/Split/index.html
@@ -0,0 +1,2 @@
+
+Split (containers.CCStringLabels.Split)
Module CCStringLabels.Split
type drop_if_empty = {
first : bool;
last : bool;
}
Specification of what to do with empty blocks, as in split ~by:"-" "-a-b-".
{first=false; last=false} will return ""; "a"; "b"; ""
{first=true; last=false} will return "a"; "b" ""
{first=false; last=true} will return ""; "a"; "b"
{first=true; last=true} will return "a"; "b"
The default value of all remaining functions is Drop_none.
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.
raises Not_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.
raises Not_found
if by is not part of the string.
since
0.16
\ No newline at end of file
diff --git a/2.8/containers/CCStringLabels/Sub/index.html b/2.8/containers/CCStringLabels/Sub/index.html
new file mode 100644
index 00000000..cdb7f31f
--- /dev/null
+++ b/2.8/containers/CCStringLabels/Sub/index.html
@@ -0,0 +1,2 @@
+
+Sub (containers.CCStringLabels.Sub)
\ No newline at end of file
diff --git a/2.8/containers/CCStringLabels/index.html b/2.8/containers/CCStringLabels/index.html
new file mode 100644
index 00000000..b2b56361
--- /dev/null
+++ b/2.8/containers/CCStringLabels/index.html
@@ -0,0 +1,2 @@
+
+CCStringLabels (containers.CCStringLabels)
Module CCStringLabels
Basic String Utils
type 'a sequence = ('a-> unit) -> unit
deprecated
use 'a iter instead
type 'a iter = ('a-> unit) -> unit
Fast internal iterator.
since
2.8
type 'a gen = unit ->'a option
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.8/containers/CCStringLabels/module-type-S/index.html b/2.8/containers/CCStringLabels/module-type-S/index.html
new file mode 100644
index 00000000..257024a9
--- /dev/null
+++ b/2.8/containers/CCStringLabels/module-type-S/index.html
@@ -0,0 +1,2 @@
+
+S (containers.CCStringLabels.S)
\ No newline at end of file
diff --git a/2.8/containers/CCThread/.dune-keep b/2.8/containers/CCThread/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCThread/Arr/index.html b/2.8/containers/CCThread/Arr/index.html
new file mode 100644
index 00000000..146cee1a
--- /dev/null
+++ b/2.8/containers/CCThread/Arr/index.html
@@ -0,0 +1,2 @@
+
+Arr (containers.CCThread.Arr)
\ No newline at end of file
diff --git a/2.8/containers/CCThread/Barrier/index.html b/2.8/containers/CCThread/Barrier/index.html
new file mode 100644
index 00000000..47d12aef
--- /dev/null
+++ b/2.8/containers/CCThread/Barrier/index.html
@@ -0,0 +1,2 @@
+
+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.8/containers/CCThread/index.html b/2.8/containers/CCThread/index.html
new file mode 100644
index 00000000..aaed5861
--- /dev/null
+++ b/2.8/containers/CCThread/index.html
@@ -0,0 +1,2 @@
+
+CCThread (containers.CCThread)
\ No newline at end of file
diff --git a/2.8/containers/CCTimer/.dune-keep b/2.8/containers/CCTimer/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCTimer/index.html b/2.8/containers/CCTimer/index.html
new file mode 100644
index 00000000..0f8d87d7
--- /dev/null
+++ b/2.8/containers/CCTimer/index.html
@@ -0,0 +1,2 @@
+
+CCTimer (containers.CCTimer)
Module CCTimer
Event timer
Used to be part of CCFuture.
since
0.16
type t
A scheduler for events. It runs in its own thread.
\ No newline at end of file
diff --git a/2.8/containers/CCTrie/.dune-keep b/2.8/containers/CCTrie/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCTrie/Make/argument-1-W/index.html b/2.8/containers/CCTrie/Make/argument-1-W/index.html
new file mode 100644
index 00000000..43d90e56
--- /dev/null
+++ b/2.8/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.8/containers/CCTrie/Make/index.html b/2.8/containers/CCTrie/Make/index.html
new file mode 100644
index 00000000..a1538949
--- /dev/null
+++ b/2.8/containers/CCTrie/Make/index.html
@@ -0,0 +1,2 @@
+
+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.8/containers/CCTrie/MakeArray/argument-1-X/index.html b/2.8/containers/CCTrie/MakeArray/argument-1-X/index.html
new file mode 100644
index 00000000..eed6dcbf
--- /dev/null
+++ b/2.8/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.8/containers/CCTrie/MakeArray/index.html b/2.8/containers/CCTrie/MakeArray/index.html
new file mode 100644
index 00000000..ebe46d23
--- /dev/null
+++ b/2.8/containers/CCTrie/MakeArray/index.html
@@ -0,0 +1,2 @@
+
+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.8/containers/CCTrie/MakeList/argument-1-X/index.html b/2.8/containers/CCTrie/MakeList/argument-1-X/index.html
new file mode 100644
index 00000000..0d18e794
--- /dev/null
+++ b/2.8/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.8/containers/CCTrie/MakeList/index.html b/2.8/containers/CCTrie/MakeList/index.html
new file mode 100644
index 00000000..e70a44b7
--- /dev/null
+++ b/2.8/containers/CCTrie/MakeList/index.html
@@ -0,0 +1,2 @@
+
+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.8/containers/CCTrie/String/index.html b/2.8/containers/CCTrie/String/index.html
new file mode 100644
index 00000000..2ddf03d6
--- /dev/null
+++ b/2.8/containers/CCTrie/String/index.html
@@ -0,0 +1,2 @@
+
+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.8/containers/CCTrie/index.html b/2.8/containers/CCTrie/index.html
new file mode 100644
index 00000000..ce6d407d
--- /dev/null
+++ b/2.8/containers/CCTrie/index.html
@@ -0,0 +1,2 @@
+
+CCTrie (containers.CCTrie)
Module CCTrie
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
\ No newline at end of file
diff --git a/2.8/containers/CCTrie/module-type-ORDERED/index.html b/2.8/containers/CCTrie/module-type-ORDERED/index.html
new file mode 100644
index 00000000..679a4aa3
--- /dev/null
+++ b/2.8/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.8/containers/CCTrie/module-type-S/index.html b/2.8/containers/CCTrie/module-type-S/index.html
new file mode 100644
index 00000000..9ca14a15
--- /dev/null
+++ b/2.8/containers/CCTrie/module-type-S/index.html
@@ -0,0 +1,2 @@
+
+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.8/containers/CCTrie/module-type-WORD/index.html b/2.8/containers/CCTrie/module-type-WORD/index.html
new file mode 100644
index 00000000..ab70ea37
--- /dev/null
+++ b/2.8/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.8/containers/CCUnix/.dune-keep b/2.8/containers/CCUnix/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCUnix/Infix/index.html b/2.8/containers/CCUnix/Infix/index.html
new file mode 100644
index 00000000..f7eff0f2
--- /dev/null
+++ b/2.8/containers/CCUnix/Infix/index.html
@@ -0,0 +1,2 @@
+
+Infix (containers.CCUnix.Infix)
Module CCUnix.Infix
val (?|) : ('a, Stdlib.Buffer.t, unit, call_result) Stdlib.format4 ->'a
\ No newline at end of file
diff --git a/2.8/containers/CCUnix/index.html b/2.8/containers/CCUnix/index.html
new file mode 100644
index 00000000..c3877412
--- /dev/null
+++ b/2.8/containers/CCUnix/index.html
@@ -0,0 +1,2 @@
+
+CCUnix (containers.CCUnix)
Module CCUnix
High-level Functions on top of Unix
Some useful functions built on top of Unix.
status: unstable
since
0.10
type 'a or_error = ('a, string) Stdlib.result
type 'a gen = unit ->'a option
Calling Commands
val escape_str : string -> string
Escape a string so it can be a shell argument.
type call_result = < stdout : string; stderr : string; status : Unix.process_status; errcode : int; >
val call_full : ?bufsize:int -> ?stdin:[ `Gen of string gen | `Str of string ] -> ?env:string array -> ('a, Stdlib.Buffer.t, unit, call_result) Stdlib.format4 ->'a
call_full cmd wraps the result of Unix.open_process_full cmd into an object. It reads the full stdout and stderr of the subprocess before returning.
parameter stdin
if provided, the generator or string is consumed and fed to the subprocess input channel, which is then closed.
parameter bufsize
buffer size used to read stdout and stderr.
parameter env
environment to run the command in.
val call : ?bufsize:int -> ?stdin:[ `Gen of string gen | `Str of string ] -> ?env:string array -> ('a, Stdlib.Buffer.t, unit, string * string * int) Stdlib.format4 ->'a
call cmd is similar to call_full cmd but returns a tuple stdout, stderr, errcode instead of an object.
val call_stdout : ?bufsize:int -> ?stdin:[ `Gen of string gen | `Str of string ] -> ?env:string array -> ('a, Stdlib.Buffer.t, unit, string) Stdlib.format4 ->'a
A subprocess for interactive usage (read/write channels line by line)
since
0.11
val async_call : ?env:string array -> ('a, Stdlib.Buffer.t, unit, async_call_result) Stdlib.format4 ->'a
Spawns a subprocess, like call, but the subprocess's channels are line generators and line sinks (for stdin). If p is async_call "cmd", then p#wait waits for the subprocess to die. Channels can be closed independently.
since
0.11
Accessors
since
0.11
val stdout : < stdout : 'a; .. > ->'a
val stderr : < stderr : 'a; .. > ->'a
val status : < status : 'a; .. > ->'a
val errcode : < errcode : 'a; .. > ->'a
Simple IO
val with_in : ?mode:int -> ?flags:Unix.open_flag list -> string -> f:(Stdlib.in_channel ->'a) ->'a
Open an input file with the given optional flag list, calls the function on the input channel. When the function raises or returns, the channel is closed.
parameter flags
opening flags. Unix.O_RDONLY is used in any cases.
since
0.16
val with_out : ?mode:int -> ?flags:Unix.open_flag list -> string -> f:(Stdlib.out_channel ->'a) ->'a
val with_process_out : string -> f:(Stdlib.out_channel ->'a) ->'a
Open a shell command in a subprocess and obtain a handle to its stdin.
since
0.16
type process_full = < stdin : Stdlib.out_channel; stdout : Stdlib.in_channel; stderr : Stdlib.in_channel; close : Unix.process_status; >
Handle to a subprocess.
since
0.16
val with_process_full : ?env:string array -> string -> f:(process_full->'a) ->'a
Open a subprocess and obtain a handle to its channels.
parameter env
environment to pass to the subprocess.
since
0.16
val ensure_session_leader : unit -> unit
On unix, call Unix.setsid() to make sure subprocesses die at the same time as the current process. Does nothing on windows. Idempotent: it can be called several times but will only have effects, if any, the first time.
since
2.8
Networking
val with_connection : Unix.sockaddr -> f:(Stdlib.in_channel -> Stdlib.out_channel ->'a) ->'a
Wrap Unix.open_connection with a handler.
since
0.16
exceptionExitServer
val establish_server : Unix.sockaddr -> f:(Stdlib.in_channel -> Stdlib.out_channel ->_) -> unit
Listen on the address and calls the handler in a blocking fashion. Using Thread is recommended if handlers might take time. The callback should raise ExitServer to stop the loop.
with_file_lock ~kind filename f puts a lock on the offset 0 of the file named filename, calls f and returns its result after the file is unlocked. If f () raises an exception the exception is re-raised after the file is unlocked.
parameter kind
specifies whether the lock is read-only or read-write.
Create a temporary directory, call the function, and then destroy the directory afterwards. Usage with_temp_dir pattern f.
parameter pattern
the naming pattern for the temporary directory. Helps avoiding collisions.
parameter mode
mode for the directory
parameter dir
the directory under which to make a temporary directory (default /tmp)
Note that this is implemented following the discussion at: https://discuss.ocaml.org/t/how-to-create-a-temporary-directory-in-ocaml/1815/
since
2.8
\ No newline at end of file
diff --git a/2.8/containers/CCUtf8_string/.dune-keep b/2.8/containers/CCUtf8_string/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCUtf8_string/index.html b/2.8/containers/CCUtf8_string/index.html
new file mode 100644
index 00000000..c3dfe0a9
--- /dev/null
+++ b/2.8/containers/CCUtf8_string/index.html
@@ -0,0 +1,2 @@
+
+CCUtf8_string (containers.CCUtf8_string)
Conversion from a string without validating. CAUTION this is unsafe and can break all the other functions in this module. Use only if you're sure the string is valid UTF8. Upon iteration, if an invalid substring is met, Malformed will be raised.
\ No newline at end of file
diff --git a/2.8/containers/CCVector/.dune-keep b/2.8/containers/CCVector/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCVector/index.html b/2.8/containers/CCVector/index.html
new file mode 100644
index 00000000..cefa092e
--- /dev/null
+++ b/2.8/containers/CCVector/index.html
@@ -0,0 +1,2 @@
+
+CCVector (containers.CCVector)
Module CCVector
Growable, mutable vector
type ro = [
| `RO
]
type rw = [
| `RW
]
type ('a, 'mut) t
The type of a vector of elements of type 'a, with a mutability flat 'mut.
Shrink internal array to fit the size of the vector
since
2.8
val member : eq:('a->'a-> bool) ->'a-> ('a, _) t-> bool
Is the element a member of the vector?
val sort : ('a->'a-> int) -> ('a, _) t-> ('a, 'mut) t
Sort the vector, returning a copy of it that is sorted w.r.t the given ordering. The vector itself is unchanged. The underlying array of the new vector can be smaller than the original one.
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.8/containers/CCWBTree/.dune-keep b/2.8/containers/CCWBTree/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCWBTree/Make/argument-1-X/index.html b/2.8/containers/CCWBTree/Make/argument-1-X/index.html
new file mode 100644
index 00000000..d661f119
--- /dev/null
+++ b/2.8/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.8/containers/CCWBTree/Make/index.html b/2.8/containers/CCWBTree/Make/index.html
new file mode 100644
index 00000000..b5ba9ba5
--- /dev/null
+++ b/2.8/containers/CCWBTree/Make/index.html
@@ -0,0 +1,2 @@
+
+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.8/containers/CCWBTree/MakeFull/argument-1-X/index.html b/2.8/containers/CCWBTree/MakeFull/argument-1-X/index.html
new file mode 100644
index 00000000..f5855035
--- /dev/null
+++ b/2.8/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.8/containers/CCWBTree/MakeFull/index.html b/2.8/containers/CCWBTree/MakeFull/index.html
new file mode 100644
index 00000000..be4a5339
--- /dev/null
+++ b/2.8/containers/CCWBTree/MakeFull/index.html
@@ -0,0 +1,2 @@
+
+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.8/containers/CCWBTree/index.html b/2.8/containers/CCWBTree/index.html
new file mode 100644
index 00000000..5ef7e7da
--- /dev/null
+++ b/2.8/containers/CCWBTree/index.html
@@ -0,0 +1,2 @@
+
+CCWBTree (containers.CCWBTree)
Module CCWBTree
Weight-Balanced Tree
status: experimental
since
0.13
type 'a sequence = ('a-> unit) -> unit
type 'a gen = unit ->'a option
type 'a printer = Stdlib.Format.formatter ->'a-> unit
\ No newline at end of file
diff --git a/2.8/containers/CCWBTree/module-type-KEY/index.html b/2.8/containers/CCWBTree/module-type-KEY/index.html
new file mode 100644
index 00000000..45915121
--- /dev/null
+++ b/2.8/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.8/containers/CCWBTree/module-type-ORD/index.html b/2.8/containers/CCWBTree/module-type-ORD/index.html
new file mode 100644
index 00000000..de1688fc
--- /dev/null
+++ b/2.8/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.8/containers/CCWBTree/module-type-S/index.html b/2.8/containers/CCWBTree/module-type-S/index.html
new file mode 100644
index 00000000..489d9345
--- /dev/null
+++ b/2.8/containers/CCWBTree/module-type-S/index.html
@@ -0,0 +1,2 @@
+
+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.8/containers/CCZipper/.dune-keep b/2.8/containers/CCZipper/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/CCZipper/index.html b/2.8/containers/CCZipper/index.html
new file mode 100644
index 00000000..b27b6557
--- /dev/null
+++ b/2.8/containers/CCZipper/index.html
@@ -0,0 +1,2 @@
+
+CCZipper (containers.CCZipper)
Module CCZipper
List Zipper
since
1.0
type 'a t = 'a list * 'a list
The pair l, r represents the list List.rev_append l r, but with the focus on r
Drop every element on the "right" (calling right then will do nothing), including the focused element if it is present.
\ No newline at end of file
diff --git a/2.8/containers/Containers/.dune-keep b/2.8/containers/Containers/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/Containers/Hashtbl/Make/index.html b/2.8/containers/Containers/Hashtbl/Make/index.html
new file mode 100644
index 00000000..9e5c185f
--- /dev/null
+++ b/2.8/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.8/containers/Containers/Hashtbl/MakeSeeded/argument-1-H/index.html b/2.8/containers/Containers/Hashtbl/MakeSeeded/argument-1-H/index.html
new file mode 100644
index 00000000..e90f4416
--- /dev/null
+++ b/2.8/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.8/containers/Containers/Hashtbl/MakeSeeded/index.html b/2.8/containers/Containers/Hashtbl/MakeSeeded/index.html
new file mode 100644
index 00000000..4c7c1e16
--- /dev/null
+++ b/2.8/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.8/containers/Containers/Hashtbl/index.html b/2.8/containers/Containers/Hashtbl/index.html
new file mode 100644
index 00000000..77750dcd
--- /dev/null
+++ b/2.8/containers/Containers/Hashtbl/index.html
@@ -0,0 +1,2 @@
+
+Hashtbl (containers.Containers.Hashtbl)
val values : ('a, 'b) Stdlib.Hashtbl.t ->'bCCHashtbl.iter
Iterate on values in the table.
val keys_list : ('a, 'b) Stdlib.Hashtbl.t ->'a list
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) Stdlib.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) Stdlib.Hashtbl.t ->'c list
Map on a hashtable's items, collect into a list.
val incr : ?by:int -> ('a, int) Stdlib.Hashtbl.t ->'a-> unit
incr ?by tbl x increments or initializes the counter associated with x. If get tbl x = None, then after update, get tbl x = Some 1; otherwise, if get tbl x = Some n, now get tbl x = Some (n+1).
parameter by
if specified, the int value is incremented by by rather than 1.
since
0.16
val decr : ?by:int -> ('a, int) Stdlib.Hashtbl.t ->'a-> unit
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_iter_count : ('a, int) Stdlib.Hashtbl.t ->'aCCHashtbl.iter-> unit
add_iter_count tbl i increments the count of each element of i by calling incr. This is useful for counting how many times each element of i occurs.
since
2.8
val add_std_seq_count : ('a, int) Stdlib.Hashtbl.t ->'a Stdlib.Seq.t -> unit
add_seq_count tbl seq increments the count of each element of seq by calling incr. This is useful for counting how many times each element of seq occurs.
since
2.8
val add_seq_count : ('a, int) Stdlib.Hashtbl.t ->'aCCHashtbl.sequence-> unit
val of_iter_count : 'aCCHashtbl.iter-> ('a, int) Stdlib.Hashtbl.t
Like add_seq_count, but allocates a new table and returns it.
since
2.8
val of_std_seq_count : 'a Stdlib.Seq.t -> ('a, int) Stdlib.Hashtbl.t
Like add_seq_count, but allocates a new table and returns it.
val to_list : ('a, 'b) Stdlib.Hashtbl.t -> ('a * 'b) list
List of bindings (order unspecified).
val of_list : ('a * 'b) list -> ('a, 'b) Stdlib.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) Stdlib.Hashtbl.t -> f:('a->'b option ->'b option) -> k:'a-> unit
update tbl ~f ~k updates key k by calling f k (Some v) if k was mapped to v, or f k None otherwise; if the call returns None then k is removed/stays removed, if the call returns Some v' then the binding k -> v' is inserted using Hashtbl.replace.
since
0.14
val get_or_add : ('a, 'b) Stdlib.Hashtbl.t -> f:('a->'b) -> k:'a->'b
get_or_add tbl ~k ~f finds and returns the binding of k in tbl, if it exists. If it does not exist, then f k is called to obtain a new binding v; k -> v is added to tbl and v is returned.
\ No newline at end of file
diff --git a/2.8/containers/Containers/Hashtbl/module-type-HashedType/index.html b/2.8/containers/Containers/Hashtbl/module-type-HashedType/index.html
new file mode 100644
index 00000000..550d5afc
--- /dev/null
+++ b/2.8/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.8/containers/Containers/Hashtbl/module-type-S'/index.html b/2.8/containers/Containers/Hashtbl/module-type-S'/index.html
new file mode 100644
index 00000000..c0e583dc
--- /dev/null
+++ b/2.8/containers/Containers/Hashtbl/module-type-S'/index.html
@@ -0,0 +1,2 @@
+
+S' (containers.Containers.Hashtbl.S')
incr ?by tbl x increments or initializes the counter associated with x. If get tbl x = None, then after update, get tbl x = Some 1; otherwise, if get tbl x = Some n, now get tbl x = Some (n+1).
parameter by
if specified, the int value is incremented by by rather than 1.
Like incr but subtract 1 (or the value of by). If the value reaches 0, the key is removed from the table. This does nothing if the key is not already present in the table.
add_iter_count tbl i increments the count of each element of i by calling incr. This is useful for counting how many times each element of i occurs.
since
2.8
val add_std_seq_count : int t->key Stdlib.Seq.t -> unit
add_seq_count tbl seq increments the count of each element of seq by calling incr. This is useful for counting how many times each element of seq occurs.
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.
\ No newline at end of file
diff --git a/2.8/containers/Containers/Hashtbl/module-type-S/index.html b/2.8/containers/Containers/Hashtbl/module-type-S/index.html
new file mode 100644
index 00000000..5c4bfb1c
--- /dev/null
+++ b/2.8/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.8/containers/Containers/Hashtbl/module-type-SeededHashedType/index.html b/2.8/containers/Containers/Hashtbl/module-type-SeededHashedType/index.html
new file mode 100644
index 00000000..65a3daba
--- /dev/null
+++ b/2.8/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.8/containers/Containers/Hashtbl/module-type-SeededS/index.html b/2.8/containers/Containers/Hashtbl/module-type-SeededS/index.html
new file mode 100644
index 00000000..21322baa
--- /dev/null
+++ b/2.8/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.8/containers/Containers/index.html b/2.8/containers/Containers/index.html
new file mode 100644
index 00000000..684ce89f
--- /dev/null
+++ b/2.8/containers/Containers/index.html
@@ -0,0 +1,2 @@
+
+Containers (containers.Containers)
Shadow unsafe functions and operators from Pervasives
val (=) : int -> int -> bool
val (<>) : int -> int -> bool
val (<) : int -> int -> bool
val (>) : int -> int -> bool
val (<=) : int -> int -> bool
val (>=) : int -> int -> bool
val compare : int -> int -> int
val min : int -> int -> int
val max : int -> int -> int
Infix operators for Floats
val (=.) : float -> float -> bool
since
2.1
val (<>.) : float -> float -> bool
since
2.1
val (<.) : float -> float -> bool
since
2.1
val (>.) : float -> float -> bool
since
2.1
val (<=.) : float -> float -> bool
since
2.1
val (>=.) : float -> float -> bool
since
2.1
Shadow Dangerous Operators
val (==) : [ `Consider_using_CCEqual_physical ]
val (!=) : [ `Consider_using_CCEqual_physical ]
since
2.1
\ No newline at end of file
diff --git a/2.8/containers/ContainersLabels/.dune-keep b/2.8/containers/ContainersLabels/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/ContainersLabels/Hashtbl/Make/index.html b/2.8/containers/ContainersLabels/Hashtbl/Make/index.html
new file mode 100644
index 00000000..ad056dd0
--- /dev/null
+++ b/2.8/containers/ContainersLabels/Hashtbl/Make/index.html
@@ -0,0 +1,2 @@
+
+Make (containers.ContainersLabels.Hashtbl.Make)
\ No newline at end of file
diff --git a/2.8/containers/ContainersLabels/Hashtbl/MakeSeeded/argument-1-H/index.html b/2.8/containers/ContainersLabels/Hashtbl/MakeSeeded/argument-1-H/index.html
new file mode 100644
index 00000000..e6a71486
--- /dev/null
+++ b/2.8/containers/ContainersLabels/Hashtbl/MakeSeeded/argument-1-H/index.html
@@ -0,0 +1,2 @@
+
+1-H (containers.ContainersLabels.Hashtbl.MakeSeeded.1-H)
\ No newline at end of file
diff --git a/2.8/containers/ContainersLabels/Hashtbl/MakeSeeded/index.html b/2.8/containers/ContainersLabels/Hashtbl/MakeSeeded/index.html
new file mode 100644
index 00000000..666afbf3
--- /dev/null
+++ b/2.8/containers/ContainersLabels/Hashtbl/MakeSeeded/index.html
@@ -0,0 +1,2 @@
+
+MakeSeeded (containers.ContainersLabels.Hashtbl.MakeSeeded)
\ No newline at end of file
diff --git a/2.8/containers/ContainersLabels/Hashtbl/index.html b/2.8/containers/ContainersLabels/Hashtbl/index.html
new file mode 100644
index 00000000..f0296a38
--- /dev/null
+++ b/2.8/containers/ContainersLabels/Hashtbl/index.html
@@ -0,0 +1,2 @@
+
+Hashtbl (containers.ContainersLabels.Hashtbl)
val values : ('a, 'b) Stdlib.Hashtbl.t ->'bCCHashtbl.iter
Iterate on values in the table.
val keys_list : ('a, 'b) Stdlib.Hashtbl.t ->'a list
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) Stdlib.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) Stdlib.Hashtbl.t ->'c list
Map on a hashtable's items, collect into a list.
val incr : ?by:int -> ('a, int) Stdlib.Hashtbl.t ->'a-> unit
incr ?by tbl x increments or initializes the counter associated with x. If get tbl x = None, then after update, get tbl x = Some 1; otherwise, if get tbl x = Some n, now get tbl x = Some (n+1).
parameter by
if specified, the int value is incremented by by rather than 1.
since
0.16
val decr : ?by:int -> ('a, int) Stdlib.Hashtbl.t ->'a-> unit
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_iter_count : ('a, int) Stdlib.Hashtbl.t ->'aCCHashtbl.iter-> unit
add_iter_count tbl i increments the count of each element of i by calling incr. This is useful for counting how many times each element of i occurs.
since
2.8
val add_std_seq_count : ('a, int) Stdlib.Hashtbl.t ->'a Stdlib.Seq.t -> unit
add_seq_count tbl seq increments the count of each element of seq by calling incr. This is useful for counting how many times each element of seq occurs.
since
2.8
val add_seq_count : ('a, int) Stdlib.Hashtbl.t ->'aCCHashtbl.sequence-> unit
val of_iter_count : 'aCCHashtbl.iter-> ('a, int) Stdlib.Hashtbl.t
Like add_seq_count, but allocates a new table and returns it.
since
2.8
val of_std_seq_count : 'a Stdlib.Seq.t -> ('a, int) Stdlib.Hashtbl.t
Like add_seq_count, but allocates a new table and returns it.
val to_list : ('a, 'b) Stdlib.Hashtbl.t -> ('a * 'b) list
List of bindings (order unspecified).
val of_list : ('a * 'b) list -> ('a, 'b) Stdlib.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) Stdlib.Hashtbl.t -> f:('a->'b option ->'b option) -> k:'a-> unit
update tbl ~f ~k updates key k by calling f k (Some v) if k was mapped to v, or f k None otherwise; if the call returns None then k is removed/stays removed, if the call returns Some v' then the binding k -> v' is inserted using Hashtbl.replace.
since
0.14
val get_or_add : ('a, 'b) Stdlib.Hashtbl.t -> f:('a->'b) -> k:'a->'b
get_or_add tbl ~k ~f finds and returns the binding of k in tbl, if it exists. If it does not exist, then f k is called to obtain a new binding v; k -> v is added to tbl and v is returned.
\ No newline at end of file
diff --git a/2.8/containers/ContainersLabels/Hashtbl/module-type-HashedType/index.html b/2.8/containers/ContainersLabels/Hashtbl/module-type-HashedType/index.html
new file mode 100644
index 00000000..c2e677e0
--- /dev/null
+++ b/2.8/containers/ContainersLabels/Hashtbl/module-type-HashedType/index.html
@@ -0,0 +1,2 @@
+
+HashedType (containers.ContainersLabels.Hashtbl.HashedType)
\ No newline at end of file
diff --git a/2.8/containers/ContainersLabels/Hashtbl/module-type-S'/index.html b/2.8/containers/ContainersLabels/Hashtbl/module-type-S'/index.html
new file mode 100644
index 00000000..e2100722
--- /dev/null
+++ b/2.8/containers/ContainersLabels/Hashtbl/module-type-S'/index.html
@@ -0,0 +1,2 @@
+
+S' (containers.ContainersLabels.Hashtbl.S')
incr ?by tbl x increments or initializes the counter associated with x. If get tbl x = None, then after update, get tbl x = Some 1; otherwise, if get tbl x = Some n, now get tbl x = Some (n+1).
parameter by
if specified, the int value is incremented by by rather than 1.
Like incr but subtract 1 (or the value of by). If the value reaches 0, the key is removed from the table. This does nothing if the key is not already present in the table.
add_iter_count tbl i increments the count of each element of i by calling incr. This is useful for counting how many times each element of i occurs.
since
2.8
val add_std_seq_count : int t->key Stdlib.Seq.t -> unit
add_seq_count tbl seq increments the count of each element of seq by calling incr. This is useful for counting how many times each element of seq occurs.
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.
\ No newline at end of file
diff --git a/2.8/containers/ContainersLabels/Hashtbl/module-type-S/index.html b/2.8/containers/ContainersLabels/Hashtbl/module-type-S/index.html
new file mode 100644
index 00000000..4d95c9a4
--- /dev/null
+++ b/2.8/containers/ContainersLabels/Hashtbl/module-type-S/index.html
@@ -0,0 +1,2 @@
+
+S (containers.ContainersLabels.Hashtbl.S)
\ No newline at end of file
diff --git a/2.8/containers/ContainersLabels/Hashtbl/module-type-SeededHashedType/index.html b/2.8/containers/ContainersLabels/Hashtbl/module-type-SeededHashedType/index.html
new file mode 100644
index 00000000..b46f956a
--- /dev/null
+++ b/2.8/containers/ContainersLabels/Hashtbl/module-type-SeededHashedType/index.html
@@ -0,0 +1,2 @@
+
+SeededHashedType (containers.ContainersLabels.Hashtbl.SeededHashedType)
\ No newline at end of file
diff --git a/2.8/containers/ContainersLabels/Hashtbl/module-type-SeededS/index.html b/2.8/containers/ContainersLabels/Hashtbl/module-type-SeededS/index.html
new file mode 100644
index 00000000..ef9e614b
--- /dev/null
+++ b/2.8/containers/ContainersLabels/Hashtbl/module-type-SeededS/index.html
@@ -0,0 +1,2 @@
+
+SeededS (containers.ContainersLabels.Hashtbl.SeededS)
\ No newline at end of file
diff --git a/2.8/containers/ContainersLabels/index.html b/2.8/containers/ContainersLabels/index.html
new file mode 100644
index 00000000..fa67fddf
--- /dev/null
+++ b/2.8/containers/ContainersLabels/index.html
@@ -0,0 +1,2 @@
+
+ContainersLabels (containers.ContainersLabels)
Shadow unsafe functions and operators from Pervasives
val (=) : int -> int -> bool
val (<>) : int -> int -> bool
val (<) : int -> int -> bool
val (>) : int -> int -> bool
val (<=) : int -> int -> bool
val (>=) : int -> int -> bool
val compare : int -> int -> int
val min : int -> int -> int
val max : int -> int -> int
Infix operators for Floats
val (=.) : float -> float -> bool
since
2.1
val (<>.) : float -> float -> bool
since
2.1
val (<.) : float -> float -> bool
since
2.1
val (>.) : float -> float -> bool
since
2.1
val (<=.) : float -> float -> bool
since
2.1
val (>=.) : float -> float -> bool
since
2.1
Shadow Dangerous Operators
val (==) : [ `Consider_using_CCEqual_physical ]
val (!=) : [ `Consider_using_CCEqual_physical ]
since
2.1
\ No newline at end of file
diff --git a/2.8/containers/Containers_top/.dune-keep b/2.8/containers/Containers_top/.dune-keep
new file mode 100644
index 00000000..e69de29b
diff --git a/2.8/containers/Containers_top/index.html b/2.8/containers/Containers_top/index.html
new file mode 100644
index 00000000..ae16200f
--- /dev/null
+++ b/2.8/containers/Containers_top/index.html
@@ -0,0 +1,2 @@
+
+Containers_top (containers.Containers_top)
Module Containers_top
type 'a printer = Stdlib.Format.formatter ->'a-> unit
val eval_exn : string -> bool
val install_printer : string -> unit
val install_printers : string list -> unit
\ No newline at end of file
diff --git a/2.8/containers/index.html b/2.8/containers/index.html
new file mode 100644
index 00000000..2347d3ae
--- /dev/null
+++ b/2.8/containers/index.html
@@ -0,0 +1,2 @@
+
+index (containers.index)
containers index
Library containers
This library exposes the following toplevel modules: