Commit | Line | Data |
---|---|---|
7f918cf1 CE |
1 | (* Copyright (C) 2017 Matthew Fluet. |
2 | * Copyright (C) 2014 Rob Simmons. | |
3 | * Copyright (C) 1999-2008 Henry Cejtin, Matthew Fluet, Suresh | |
4 | * Jagannathan, and Stephen Weeks. | |
5 | * Copyright (C) 1997-2000 NEC Research Institute. | |
6 | * | |
7 | * MLton is released under a BSD-style license. | |
8 | * See the file MLton-LICENSE for details. | |
9 | *) | |
10 | ||
11 | signature PRIM_SEQUENCE = | |
12 | sig | |
13 | type 'a sequence | |
14 | type 'a elt | |
15 | ||
16 | structure Slice: PRIM_SLICE where type 'a sequence = 'a sequence | |
17 | and type 'a elt = 'a elt | |
18 | ||
19 | val maxLen: SeqIndex.int (* Must also be representable as an Int.int *) | |
20 | val length: 'a sequence -> SeqIndex.int | |
21 | val sub: 'a sequence * SeqIndex.int -> 'a elt | |
22 | val unsafeSub: 'a sequence * SeqIndex.int -> 'a elt | |
23 | val uninitIsNop: 'a sequence -> bool | |
24 | val uninit: 'a sequence * SeqIndex.int -> unit | |
25 | val unsafeUninit: 'a sequence * SeqIndex.int -> unit | |
26 | val update: 'a sequence * SeqIndex.int * 'a elt -> unit | |
27 | val unsafeUpdate: 'a sequence * SeqIndex.int * 'a elt -> unit | |
28 | val copy: {dst: 'a elt array, di: SeqIndex.int, src: 'a sequence} -> unit | |
29 | val unsafeCopy: {dst: 'a elt array, di: SeqIndex.int, src: 'a sequence} -> unit | |
30 | val tabulate: SeqIndex.int * (SeqIndex.int -> 'a elt) -> 'a sequence | |
31 | val appi: (SeqIndex.int * 'a elt -> unit) -> 'a sequence -> unit | |
32 | val app: ('a elt -> unit) -> 'a sequence -> unit | |
33 | val mapi: (SeqIndex.int * 'a elt -> 'b elt) -> 'a sequence -> 'b sequence | |
34 | val map: ('a elt -> 'b elt) -> 'a sequence -> 'b sequence | |
35 | val foldli: (SeqIndex.int * 'a elt * 'b -> 'b) -> 'b -> 'a sequence -> 'b | |
36 | val foldl: ('a elt * 'b -> 'b) -> 'b -> 'a sequence -> 'b | |
37 | val foldri: (SeqIndex.int * 'a elt * 'b -> 'b) -> 'b -> 'a sequence -> 'b | |
38 | val foldr: ('a elt * 'b -> 'b) -> 'b -> 'a sequence -> 'b | |
39 | val findi: (SeqIndex.int * 'a elt -> bool) -> 'a sequence -> (SeqIndex.int * 'a elt) option | |
40 | val find: ('a elt -> bool) -> 'a sequence -> 'a elt option | |
41 | val existsi: (SeqIndex.int * 'a elt -> bool) -> 'a sequence -> bool | |
42 | val exists: ('a elt -> bool) -> 'a sequence -> bool | |
43 | val alli: (SeqIndex.int * 'a elt -> bool) -> 'a sequence -> bool | |
44 | val all: ('a elt -> bool) -> 'a sequence -> bool | |
45 | val collate: ('a elt * 'a elt -> order) -> 'a sequence * 'a sequence -> order | |
46 | ||
47 | ||
48 | ||
49 | ||
50 | (* Extra *) | |
51 | val alloc: SeqIndex.int -> 'a sequence | |
52 | val append: 'a sequence * 'a sequence -> 'a sequence | |
53 | val create: | |
54 | SeqIndex.int -> {done: unit -> 'a sequence, | |
55 | sub: SeqIndex.int -> 'a elt, | |
56 | update: SeqIndex.int * 'a elt -> unit} | |
57 | val duplicate: 'a sequence -> 'a sequence | |
58 | val new: SeqIndex.int * 'a elt -> 'a sequence | |
59 | val unfoldi: SeqIndex.int * 'b * (SeqIndex.int * 'b -> 'a elt * 'b) -> 'a sequence * 'b | |
60 | val unfold: SeqIndex.int * 'b * ('b -> 'a elt * 'b) -> 'a sequence * 'b | |
61 | val unsafeAlloc: SeqIndex.int -> 'a sequence | |
62 | val unsafeFromArray: 'a elt array -> 'a sequence | |
63 | end |