44 |
42 |
45 val funpow : int -> ('a -> 'a) -> 'a -> 'a |
43 val funpow : int -> ('a -> 'a) -> 'a -> 'a |
46 |
44 |
47 val exp : ('a * 'a -> 'a) -> 'a -> int -> 'a -> 'a |
45 val exp : ('a * 'a -> 'a) -> 'a -> int -> 'a -> 'a |
48 |
46 |
|
47 (* ------------------------------------------------------------------------- *) |
|
48 (* Pairs. *) |
|
49 (* ------------------------------------------------------------------------- *) |
|
50 |
|
51 val fst : 'a * 'b -> 'a |
|
52 |
|
53 val snd : 'a * 'b -> 'b |
|
54 |
|
55 val pair : 'a -> 'b -> 'a * 'b |
|
56 |
|
57 val swap : 'a * 'b -> 'b * 'a |
|
58 |
|
59 val curry : ('a * 'b -> 'c) -> 'a -> 'b -> 'c |
|
60 |
|
61 val uncurry : ('a -> 'b -> 'c) -> 'a * 'b -> 'c |
|
62 |
|
63 val ## : ('a -> 'c) * ('b -> 'd) -> 'a * 'b -> 'c * 'd |
|
64 |
|
65 (* ------------------------------------------------------------------------- *) |
|
66 (* State transformers. *) |
|
67 (* ------------------------------------------------------------------------- *) |
|
68 |
|
69 val unit : 'a -> 's -> 'a * 's |
|
70 |
|
71 val bind : ('s -> 'a * 's) -> ('a -> 's -> 'b * 's) -> 's -> 'b * 's |
|
72 |
|
73 val mmap : ('a -> 'b) -> ('s -> 'a * 's) -> 's -> 'b * 's |
|
74 |
|
75 val mjoin : ('s -> ('s -> 'a * 's) * 's) -> 's -> 'a * 's |
|
76 |
|
77 val mwhile : ('a -> bool) -> ('a -> 's -> 'a * 's) -> 'a -> 's -> 'a * 's |
|
78 |
|
79 (* ------------------------------------------------------------------------- *) |
|
80 (* Equality. *) |
|
81 (* ------------------------------------------------------------------------- *) |
|
82 |
49 val equal : ''a -> ''a -> bool |
83 val equal : ''a -> ''a -> bool |
50 |
84 |
51 val notEqual : ''a -> ''a -> bool |
85 val notEqual : ''a -> ''a -> bool |
52 |
86 |
53 (* ------------------------------------------------------------------------- *) |
87 val listEqual : ('a -> 'a -> bool) -> 'a list -> 'a list -> bool |
54 (* Pairs. *) |
|
55 (* ------------------------------------------------------------------------- *) |
|
56 |
|
57 val fst : 'a * 'b -> 'a |
|
58 |
|
59 val snd : 'a * 'b -> 'b |
|
60 |
|
61 val pair : 'a -> 'b -> 'a * 'b |
|
62 |
|
63 val swap : 'a * 'b -> 'b * 'a |
|
64 |
|
65 val curry : ('a * 'b -> 'c) -> 'a -> 'b -> 'c |
|
66 |
|
67 val uncurry : ('a -> 'b -> 'c) -> 'a * 'b -> 'c |
|
68 |
|
69 val ## : ('a -> 'c) * ('b -> 'd) -> 'a * 'b -> 'c * 'd |
|
70 |
|
71 (* ------------------------------------------------------------------------- *) |
|
72 (* State transformers. *) |
|
73 (* ------------------------------------------------------------------------- *) |
|
74 |
|
75 val unit : 'a -> 's -> 'a * 's |
|
76 |
|
77 val bind : ('s -> 'a * 's) -> ('a -> 's -> 'b * 's) -> 's -> 'b * 's |
|
78 |
|
79 val mmap : ('a -> 'b) -> ('s -> 'a * 's) -> 's -> 'b * 's |
|
80 |
|
81 val mjoin : ('s -> ('s -> 'a * 's) * 's) -> 's -> 'a * 's |
|
82 |
|
83 val mwhile : ('a -> bool) -> ('a -> 's -> 'a * 's) -> 'a -> 's -> 'a * 's |
|
84 |
|
85 (* ------------------------------------------------------------------------- *) |
|
86 (* Lists: note we count elements from 0. *) |
|
87 (* ------------------------------------------------------------------------- *) |
|
88 |
|
89 val cons : 'a -> 'a list -> 'a list |
|
90 |
|
91 val hdTl : 'a list -> 'a * 'a list |
|
92 |
|
93 val append : 'a list -> 'a list -> 'a list |
|
94 |
|
95 val singleton : 'a -> 'a list |
|
96 |
|
97 val first : ('a -> 'b option) -> 'a list -> 'b option |
|
98 |
|
99 val index : ('a -> bool) -> 'a list -> int option |
|
100 |
|
101 val maps : ('a -> 's -> 'b * 's) -> 'a list -> 's -> 'b list * 's |
|
102 |
|
103 val mapsPartial : ('a -> 's -> 'b option * 's) -> 'a list -> 's -> 'b list * 's |
|
104 |
|
105 val enumerate : 'a list -> (int * 'a) list |
|
106 |
|
107 val zipwith : ('a -> 'b -> 'c) -> 'a list -> 'b list -> 'c list |
|
108 |
|
109 val zip : 'a list -> 'b list -> ('a * 'b) list |
|
110 |
|
111 val unzip : ('a * 'b) list -> 'a list * 'b list |
|
112 |
|
113 val cartwith : ('a -> 'b -> 'c) -> 'a list -> 'b list -> 'c list |
|
114 |
|
115 val cart : 'a list -> 'b list -> ('a * 'b) list |
|
116 |
|
117 val divide : 'a list -> int -> 'a list * 'a list (* Subscript *) |
|
118 |
|
119 val revDivide : 'a list -> int -> 'a list * 'a list (* Subscript *) |
|
120 |
|
121 val updateNth : int * 'a -> 'a list -> 'a list (* Subscript *) |
|
122 |
|
123 val deleteNth : int -> 'a list -> 'a list (* Subscript *) |
|
124 |
|
125 (* ------------------------------------------------------------------------- *) |
|
126 (* Sets implemented with lists. *) |
|
127 (* ------------------------------------------------------------------------- *) |
|
128 |
|
129 val mem : ''a -> ''a list -> bool |
|
130 |
|
131 val insert : ''a -> ''a list -> ''a list |
|
132 |
|
133 val delete : ''a -> ''a list -> ''a list |
|
134 |
|
135 val setify : ''a list -> ''a list (* removes duplicates *) |
|
136 |
|
137 val union : ''a list -> ''a list -> ''a list |
|
138 |
|
139 val intersect : ''a list -> ''a list -> ''a list |
|
140 |
|
141 val difference : ''a list -> ''a list -> ''a list |
|
142 |
|
143 val subset : ''a list -> ''a list -> bool |
|
144 |
|
145 val distinct : ''a list -> bool |
|
146 |
88 |
147 (* ------------------------------------------------------------------------- *) |
89 (* ------------------------------------------------------------------------- *) |
148 (* Comparisons. *) |
90 (* Comparisons. *) |
149 (* ------------------------------------------------------------------------- *) |
91 (* ------------------------------------------------------------------------- *) |
150 |
92 |
157 |
99 |
158 val lexCompare : ('a * 'a -> order) -> 'a list * 'a list -> order |
100 val lexCompare : ('a * 'a -> order) -> 'a list * 'a list -> order |
159 |
101 |
160 val optionCompare : ('a * 'a -> order) -> 'a option * 'a option -> order |
102 val optionCompare : ('a * 'a -> order) -> 'a option * 'a option -> order |
161 |
103 |
162 val boolCompare : bool * bool -> order (* true < false *) |
104 val boolCompare : bool * bool -> order (* false < true *) |
|
105 |
|
106 (* ------------------------------------------------------------------------- *) |
|
107 (* Lists: note we count elements from 0. *) |
|
108 (* ------------------------------------------------------------------------- *) |
|
109 |
|
110 val cons : 'a -> 'a list -> 'a list |
|
111 |
|
112 val hdTl : 'a list -> 'a * 'a list |
|
113 |
|
114 val append : 'a list -> 'a list -> 'a list |
|
115 |
|
116 val singleton : 'a -> 'a list |
|
117 |
|
118 val first : ('a -> 'b option) -> 'a list -> 'b option |
|
119 |
|
120 val maps : ('a -> 's -> 'b * 's) -> 'a list -> 's -> 'b list * 's |
|
121 |
|
122 val mapsPartial : ('a -> 's -> 'b option * 's) -> 'a list -> 's -> 'b list * 's |
|
123 |
|
124 val zipWith : ('a -> 'b -> 'c) -> 'a list -> 'b list -> 'c list |
|
125 |
|
126 val zip : 'a list -> 'b list -> ('a * 'b) list |
|
127 |
|
128 val unzip : ('a * 'b) list -> 'a list * 'b list |
|
129 |
|
130 val cartwith : ('a -> 'b -> 'c) -> 'a list -> 'b list -> 'c list |
|
131 |
|
132 val cart : 'a list -> 'b list -> ('a * 'b) list |
|
133 |
|
134 val takeWhile : ('a -> bool) -> 'a list -> 'a list |
|
135 |
|
136 val dropWhile : ('a -> bool) -> 'a list -> 'a list |
|
137 |
|
138 val divideWhile : ('a -> bool) -> 'a list -> 'a list * 'a list |
|
139 |
|
140 val groups : ('a * 's -> bool * 's) -> 's -> 'a list -> 'a list list |
|
141 |
|
142 val groupsBy : ('a * 'a -> bool) -> 'a list -> 'a list list |
|
143 |
|
144 val groupsByFst : (''a * 'b) list -> (''a * 'b list) list |
|
145 |
|
146 val groupsOf : int -> 'a list -> 'a list list |
|
147 |
|
148 val index : ('a -> bool) -> 'a list -> int option |
|
149 |
|
150 val enumerate : 'a list -> (int * 'a) list |
|
151 |
|
152 val divide : 'a list -> int -> 'a list * 'a list (* Subscript *) |
|
153 |
|
154 val revDivide : 'a list -> int -> 'a list * 'a list (* Subscript *) |
|
155 |
|
156 val updateNth : int * 'a -> 'a list -> 'a list (* Subscript *) |
|
157 |
|
158 val deleteNth : int -> 'a list -> 'a list (* Subscript *) |
|
159 |
|
160 (* ------------------------------------------------------------------------- *) |
|
161 (* Sets implemented with lists. *) |
|
162 (* ------------------------------------------------------------------------- *) |
|
163 |
|
164 val mem : ''a -> ''a list -> bool |
|
165 |
|
166 val insert : ''a -> ''a list -> ''a list |
|
167 |
|
168 val delete : ''a -> ''a list -> ''a list |
|
169 |
|
170 val setify : ''a list -> ''a list (* removes duplicates *) |
|
171 |
|
172 val union : ''a list -> ''a list -> ''a list |
|
173 |
|
174 val intersect : ''a list -> ''a list -> ''a list |
|
175 |
|
176 val difference : ''a list -> ''a list -> ''a list |
|
177 |
|
178 val subset : ''a list -> ''a list -> bool |
|
179 |
|
180 val distinct : ''a list -> bool |
163 |
181 |
164 (* ------------------------------------------------------------------------- *) |
182 (* ------------------------------------------------------------------------- *) |
165 (* Sorting and searching. *) |
183 (* Sorting and searching. *) |
166 (* ------------------------------------------------------------------------- *) |
184 (* ------------------------------------------------------------------------- *) |
167 |
185 |
207 |
225 |
208 val join : string -> string list -> string |
226 val join : string -> string list -> string |
209 |
227 |
210 val split : string -> string -> string list |
228 val split : string -> string -> string list |
211 |
229 |
|
230 val capitalize : string -> string |
|
231 |
212 val mkPrefix : string -> string -> string |
232 val mkPrefix : string -> string -> string |
213 |
233 |
214 val destPrefix : string -> string -> string |
234 val destPrefix : string -> string -> string |
215 |
235 |
216 val isPrefix : string -> string -> bool |
236 val isPrefix : string -> string -> bool |
217 |
237 |
|
238 val stripPrefix : (char -> bool) -> string -> string |
|
239 |
|
240 val mkSuffix : string -> string -> string |
|
241 |
|
242 val destSuffix : string -> string -> string |
|
243 |
|
244 val isSuffix : string -> string -> bool |
|
245 |
|
246 val stripSuffix : (char -> bool) -> string -> string |
|
247 |
218 (* ------------------------------------------------------------------------- *) |
248 (* ------------------------------------------------------------------------- *) |
219 (* Tables. *) |
249 (* Tables. *) |
220 (* ------------------------------------------------------------------------- *) |
250 (* ------------------------------------------------------------------------- *) |
221 |
251 |
222 type columnAlignment = {leftAlign : bool, padChar : char} |
252 type columnAlignment = {leftAlign : bool, padChar : char} |
269 |
299 |
270 val time : unit -> string |
300 val time : unit -> string |
271 |
301 |
272 val date : unit -> string |
302 val date : unit -> string |
273 |
303 |
|
304 val readDirectory : {directory : string} -> {filename : string} list |
|
305 |
274 val readTextFile : {filename : string} -> string |
306 val readTextFile : {filename : string} -> string |
275 |
307 |
276 val writeTextFile : {filename : string, contents : string} -> unit |
308 val writeTextFile : {contents : string, filename : string} -> unit |
277 |
309 |
278 (* ------------------------------------------------------------------------- *) |
310 (* ------------------------------------------------------------------------- *) |
279 (* Profiling and error reporting. *) |
311 (* Profiling and error reporting. *) |
280 (* ------------------------------------------------------------------------- *) |
312 (* ------------------------------------------------------------------------- *) |
281 |
313 |
282 val try : ('a -> 'b) -> 'a -> 'b |
314 val try : ('a -> 'b) -> 'a -> 'b |
283 |
315 |
|
316 val chat : string -> unit |
|
317 |
284 val warn : string -> unit |
318 val warn : string -> unit |
285 |
319 |
286 val die : string -> 'exit |
320 val die : string -> 'exit |
287 |
321 |
288 val timed : ('a -> 'b) -> 'a -> real * 'b |
322 val timed : ('a -> 'b) -> 'a -> real * 'b |