-
bigarray
-
dynlink
-
ocamlbytecomp
-
ocamlcommon
-
ocamlmiddleend
-
ocamloptcomp
-
odoc_info
-
raw_spacetime_lib
-
-
stdlib
-
str
-
threads
-
unix
Library
Module
Module type
Parameter
Class
Class type
Array operations
This module is intended to be used via StdLabels
which replaces Array
, Bytes
, List
and String
with their labeled counterparts
For example:
open StdLabels
let everything = Array.create_matrix ~dimx:42 ~dimy:42 42
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
.
- raises Invalid_argument
if
n
is outside the range 0 to(length a - 1)
.
set a n x
modifies array a
in place, replacing element number n
with x
. You can also write a.(n) <- x
instead of set a n x
.
- raises Invalid_argument
if
n
is outside the range 0 tolength a - 1
.
make n x
returns a fresh array of length n
, initialized 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
orn > Sys.max_array_length
. If the value ofx
is a floating-point number, then the maximum size is onlySys.max_array_length / 2
.
- deprecated
create
is an alias formake
.
init n ~f
returns a fresh array of length n
, with element number i
initialized to the result of f i
. In other terms, init n ~f
tabulates the results of f
applied to the integers 0
to n-1
.
- raises Invalid_argument
if
n < 0
orn > Sys.max_array_length
. If the return type off
isfloat
, then the maximum size is onlySys.max_array_length / 2
.
make_matrix ~dimx ~dimy e
returns a two-dimensional array (an array of arrays) with first dimension dimx
and second dimension dimy
. All the elements of this new matrix are initially physically equal to e
. The element (x,y
) of a matrix m
is accessed with the notation m.(x).(y)
.
- raises Invalid_argument
if
dimx
ordimy
is negative or greater thanSys.max_array_length
. If the value ofe
is a floating-point number, then the maximum size is onlySys.max_array_length / 2
.
- deprecated
create_matrix
is an alias formake_matrix
.
append v1 v2
returns a fresh array containing the concatenation of the arrays v1
and v2
.
Same as append
, but concatenates a list of arrays.
sub a ~pos ~len
returns a fresh array of length len
, containing the elements number pos
to pos + len - 1
of array a
.
- raises Invalid_argument
if
pos
andlen
do not designate a valid subarray ofa
; that is, ifpos < 0
, orlen < 0
, orpos + len > length a
.
copy a
returns a copy of a
, that is, a fresh array containing the same elements as a
.
fill a ~pos ~len x
modifies the array a
in place, storing x
in elements number pos
to pos + len - 1
.
- raises Invalid_argument
if
pos
andlen
do not designate a valid subarray ofa
.
blit ~src ~src_pos ~dst ~dst_pos ~len
copies len
elements from array src
, starting at element number src_pos
, to array dst
, starting at element number dst_pos
. It works correctly even if src
and dst
are the same array, and the source and destination chunks overlap.
- raises Invalid_argument
if
src_pos
andlen
do not designate a valid subarray ofsrc
, or ifdst_pos
andlen
do not designate a valid subarray ofdst
.
iter ~f a
applies function f
in turn to all the elements of a
. It is equivalent to f a.(0); f a.(1); ...; f a.(length a - 1); ()
.
map ~f a
applies function f
to all the elements of a
, and builds an array with the results returned by f
: [| f a.(0); f a.(1); ...; f a.(length a - 1) |]
.
Same as iter
, but the function is applied to the index of the element as first argument, and the element itself as second argument.
Same as map
, but the function is applied to the index of the element as first argument, and the element itself as second argument.
fold_left ~f ~init a
computes f (... (f (f init a.(0)) a.(1)) ...) a.(n-1)
, where n
is the length of the array a
.
fold_right ~f a ~init
computes f a.(0) (f a.(1) ( ... (f a.(n-1) init) ...))
, where n
is the length of the array a
.
Iterators on two arrays
iter2 ~f a b
applies function f
to all the elements of a
and b
.
- raises Invalid_argument
if the arrays are not the same size.
- since 4.05.0
map2 ~f a b
applies function f
to all the 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)|]
.
- raises Invalid_argument
if the arrays are not the same size.
- since 4.05.0
Array scanning
exists ~f [|a1; ...; an|]
checks if at least one element of the array satisfies the predicate f
. That is, it returns (f a1) || (f a2) || ... || (f an)
.
- since 4.03.0
for_all ~f [|a1; ...; an|]
checks if all elements of the array satisfy the predicate f
. That is, it returns (f a1) && (f a2) && ... && (f an)
.
- since 4.03.0