Import Debian changes 20180207-1
[hcoop/debian/mlton.git] / basis-library / arrays-and-vectors / array2.sig
CommitLineData
7f918cf1
CE
1signature ARRAY2 =
2 sig
3 eqtype 'a array
4
5 type 'a region = {base: 'a array,
6 row: int,
7 col: int,
8 nrows: int option,
9 ncols: int option}
10
11 datatype traversal = RowMajor | ColMajor
12
13 val array: int * int * 'a -> 'a array
14 val fromList: 'a list list -> 'a array
15 val tabulate: traversal -> (int * int * (int * int -> 'a)) -> 'a array
16 val sub: 'a array * int * int -> 'a
17 val update: 'a array * int * int * 'a -> unit
18 val dimensions: 'a array -> int * int
19 val nRows: 'a array -> int
20 val nCols: 'a array -> int
21 val row: 'a array * int -> 'a vector
22 val column: 'a array * int -> 'a vector
23 val copy: {src: 'a region,
24 dst: 'a array,
25 dst_row: int,
26 dst_col: int} -> unit
27 val appi: traversal -> (int * int * 'a -> unit) -> 'a region -> unit
28 val app: traversal -> ('a -> unit) -> 'a array -> unit
29 val foldi: traversal -> (int * int * 'a * 'b -> 'b) -> 'b -> 'a region -> 'b
30 val fold: traversal -> ('a * 'b -> 'b) -> 'b -> 'a array -> 'b
31 val modifyi: traversal -> (int * int * 'a -> 'a) -> 'a region -> unit
32 val modify: traversal -> ('a -> 'a) -> 'a array -> unit
33 end