Import Debian changes 20180207-1
[hcoop/debian/mlton.git] / basis-library / arrays-and-vectors / mono-array-slice.sig
1 signature MONO_ARRAY_SLICE =
2 sig
3 type array
4 type elem
5 type slice
6 type vector
7 type vector_slice
8
9 val length: slice -> int
10 val sub: slice * int -> elem
11 val update: slice * int * elem -> unit
12 val full: array -> slice
13 val slice: array * int * int option -> slice
14 val subslice: slice * int * int option -> slice
15 val base: slice -> array * int * int
16 val vector: slice -> vector
17 val copy: {src: slice, dst: array, di: int} -> unit
18 val copyVec: {src: vector_slice, dst: array, di: int} -> unit
19 val isEmpty: slice -> bool
20 val getItem: slice -> (elem * slice) option
21 val appi: (int * elem -> unit) -> slice -> unit
22 val app: (elem -> unit) -> slice -> unit
23 val modifyi: (int * elem -> elem) -> slice -> unit
24 val modify: (elem -> elem) -> slice -> unit
25 val foldli: (int * elem * 'b -> 'b) -> 'b -> slice -> 'b
26 val foldr: (elem * 'b -> 'b) -> 'b -> slice -> 'b
27 val foldl: (elem * 'b -> 'b) -> 'b -> slice -> 'b
28 val foldri: (int * elem * 'b -> 'b) -> 'b -> slice -> 'b
29 val findi: (int * elem -> bool) -> slice -> (int * elem) option
30 val find: (elem -> bool) -> slice -> elem option
31 val exists: (elem -> bool) -> slice -> bool
32 val all: (elem -> bool) -> slice -> bool
33 val collate: (elem * elem -> order) -> slice * slice -> order
34 end
35
36 signature MONO_ARRAY_SLICE_EXTRA =
37 sig
38 include MONO_ARRAY_SLICE
39
40 val concat: slice list -> array
41 val toList: slice -> elem list
42 val toPoly: slice -> elem ArraySlice.slice
43 val uninitIsNop: slice -> bool
44 val uninit: slice * int -> unit
45 val unsafeSlice: array * int * int option -> slice
46 val unsafeSub: slice * int -> elem
47 val unsafeSubslice: slice * int * int option -> slice
48 val unsafeUninit: slice * int -> unit
49 val unsafeUpdate: slice * int * elem -> unit
50 end