From the paper by Jean-Christophe FilliĆ¢tre, "A persistent Union-Find data structure", see the ps version
val make : int ‑> 'a ‑> 'a t
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.
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
.val init : int ‑> (int ‑> 'a) ‑> 'a t
init n f
returns a persistent array of length n, with element
i
initialized to the result of f i
.
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
.val get : 'a t ‑> int ‑> 'a
get a i
returns the element with index i
from the array a
.
n
is outside the
range 0
to Array.length a - 1
.set a i v
sets the element index i
from the array a
to v
.
n
is outside the
range 0
to Array.length a - 1
.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))
.
val iter : ('a ‑> unit) ‑> 'a t ‑> unit
iter f t
applies function f
to all elements of the persistent array,
in order from element 0
to element length t - 1
.
val iteri : (int ‑> 'a ‑> unit) ‑> 'a t ‑> unit
iter f t
applies function f
to all elements of the persistent array,
in order from element 0
to element length t - 1
.
val fold_left : ('a ‑> 'b ‑> 'a) ‑> 'a ‑> 'b t ‑> 'a
val of_list : 'a list ‑> 'a t
of_list l
returns a fresh persistent array containing the elements of l
.
val of_rev_list : 'a list ‑> 'a t
of_rev_list l
is the same as of_list (List.rev l)
but more efficient.