Import Upstream version 20180207
[hcoop/debian/mlton.git] / basis-library / arrays-and-vectors / vector-slice.sig
CommitLineData
7f918cf1
CE
1signature VECTOR_SLICE_GLOBAL =
2 sig
3 end
4
5signature VECTOR_SLICE =
6 sig
7 include VECTOR_SLICE_GLOBAL
8
9 type 'a slice
10
11 val length: 'a slice -> int
12 val sub: 'a slice * int -> 'a
13 val full: 'a Vector.vector -> 'a slice
14 val slice: 'a Vector.vector * int * int option -> 'a slice
15 val subslice: 'a slice * int * int option -> 'a slice
16 val base: 'a slice -> 'a Vector.vector * int * int
17 val vector: 'a slice -> 'a Vector.vector
18 val concat: 'a slice list -> 'a Vector.vector
19 val isEmpty: 'a slice -> bool
20 val getItem: 'a slice -> ('a * 'a slice) option
21 val appi: (int * 'a -> unit) -> 'a slice -> unit
22 val app: ('a -> unit) -> 'a slice -> unit
23 val mapi: (int * 'a -> 'b) -> 'a slice -> 'b Vector.vector
24 val map: ('a -> 'b) -> 'a slice -> 'b Vector.vector
25 val foldli: (int * 'a * 'b -> 'b) -> 'b -> 'a slice -> 'b
26 val foldl: ('a * 'b -> 'b) -> 'b -> 'a slice -> 'b
27 val foldri: (int * 'a * 'b -> 'b) -> 'b -> 'a slice -> 'b
28 val foldr: ('a * 'b -> 'b) -> 'b -> 'a slice -> 'b
29 val findi: (int * 'a -> bool) -> 'a slice -> (int * 'a) option
30 val find: ('a -> bool) -> 'a slice -> 'a option
31 val exists: ('a -> bool) -> 'a slice -> bool
32 val all: ('a -> bool) -> 'a slice -> bool
33 val collate: ('a * 'a -> order) -> 'a slice * 'a slice -> order
34 end
35
36signature VECTOR_SLICE_EXTRA =
37 sig
38 include VECTOR_SLICE
39
40 val copy: {dst: 'a Array.array, di: int, src: 'a slice} -> unit
41
42 val unsafeSub: 'a slice * int -> 'a
43 val unsafeCopy: {dst: 'a Array.array, di: int, src: 'a slice} -> unit
44 val unsafeSlice: 'a Vector.vector * int * int option -> 'a slice
45 val unsafeSubslice: 'a slice * int * int option -> 'a slice
46
47 (* Used to implement Substring/String functions *)
48 val concatWith: 'a Vector.vector -> 'a slice list -> 'a Vector.vector
49 val triml: int -> 'a slice -> 'a slice
50 val trimr: int -> 'a slice -> 'a slice
51 val isPrefix: ('a * 'a -> bool) -> 'a Vector.vector -> 'a slice -> bool
52 val isSubvector: ('a * 'a -> bool) -> 'a Vector.vector -> 'a slice -> bool
53 val isSuffix: ('a * 'a -> bool) -> 'a Vector.vector -> 'a slice -> bool
54 val splitl: ('a -> bool) -> 'a slice -> 'a slice * 'a slice
55 val splitr: ('a -> bool) -> 'a slice -> 'a slice * 'a slice
56 val splitAt: 'a slice * int -> 'a slice * 'a slice
57 val dropl: ('a -> bool) -> 'a slice -> 'a slice
58 val dropr: ('a -> bool) -> 'a slice -> 'a slice
59 val takel: ('a -> bool) -> 'a slice -> 'a slice
60 val taker: ('a -> bool) -> 'a slice -> 'a slice
61 val position: ('a * 'a -> bool) ->
62 'a Vector.vector -> 'a slice -> 'a slice * 'a slice
63 val span: ''a slice * ''a slice -> ''a slice
64 val translate: ('a -> 'b Vector.vector) -> 'a slice -> 'b Vector.vector
65 val tokens: ('a -> bool) -> 'a slice -> 'a slice list
66 val fields: ('a -> bool) -> 'a slice -> 'a slice list
67
68 val toList: 'a slice -> 'a list
69 end