1Stdlib.ArrayLabels(3) OCaml library Stdlib.ArrayLabels(3)
2
3
4
6 Stdlib.ArrayLabels - no description
7
9 Module Stdlib.ArrayLabels
10
12 Module ArrayLabels
13 : (module Stdlib__arrayLabels)
14
15
16
17
18
19
20
21 type 'a t = 'a array
22
23
24 An alias for the type of arrays.
25
26
27
28 val length : 'a array -> int
29
30 Return the length (number of elements) of the given array.
31
32
33
34 val get : 'a array -> int -> 'a
35
36
37 get a n returns the element number n of array a . The first element
38 has number 0. The last element has number length a - 1 . You can also
39 write a.(n) instead of get a n .
40
41
42 Raises Invalid_argument if n is outside the range 0 to (length a - 1) .
43
44
45
46 val set : 'a array -> int -> 'a -> unit
47
48
49 set a n x modifies array a in place, replacing element number n with x
50 . You can also write a.(n) <- x instead of set a n x .
51
52
53 Raises Invalid_argument if n is outside the range 0 to length a - 1 .
54
55
56
57 val make : int -> 'a -> 'a array
58
59
60 make n x returns a fresh array of length n , initialized with x . All
61 the elements of this new array are initially physically equal to x (in
62 the sense of the == predicate). Consequently, if x is mutable, it is
63 shared among all elements of the array, and modifying x through one of
64 the array entries will modify all other entries at the same time.
65
66
67 Raises Invalid_argument if n < 0 or n > Sys.max_array_length . If the
68 value of x is a floating-point number, then the maximum size is only
69 Sys.max_array_length / 2 .
70
71
72
73 val create : int -> 'a -> 'a array
74
75 Deprecated.
76
77 create is an alias for ArrayLabels.make .
78
79
80
81 val init : int -> f:(int -> 'a) -> 'a array
82
83
84 init n ~f returns a fresh array of length n , with element number i
85 initialized to the result of f i . In other terms, init n ~f tabulates
86 the results of f applied to the integers 0 to n-1 .
87
88
89 Raises Invalid_argument if n < 0 or n > Sys.max_array_length . If the
90 return type of f is float , then the maximum size is only
91 Sys.max_array_length / 2 .
92
93
94
95 val make_matrix : dimx:int -> dimy:int -> 'a -> 'a array array
96
97
98 make_matrix ~dimx ~dimy e returns a two-dimensional array (an array of
99 arrays) with first dimension dimx and second dimension dimy . All the
100 elements of this new matrix are initially physically equal to e . The
101 element ( x,y ) of a matrix m is accessed with the notation m.(x).(y) .
102
103
104 Raises Invalid_argument if dimx or dimy is negative or greater than
105 Sys.max_array_length . If the value of e is a floating-point number,
106 then the maximum size is only Sys.max_array_length / 2 .
107
108
109
110 val create_matrix : dimx:int -> dimy:int -> 'a -> 'a array array
111
112 Deprecated.
113
114 create_matrix is an alias for ArrayLabels.make_matrix .
115
116
117
118 val append : 'a array -> 'a array -> 'a array
119
120
121 append v1 v2 returns a fresh array containing the concatenation of the
122 arrays v1 and v2 .
123
124
125
126 val concat : 'a array list -> 'a array
127
128 Same as ArrayLabels.append , but concatenates a list of arrays.
129
130
131
132 val sub : 'a array -> pos:int -> len:int -> 'a array
133
134
135 sub a ~pos ~len returns a fresh array of length len , containing the
136 elements number pos to pos + len - 1 of array a .
137
138
139 Raises Invalid_argument if pos and len do not designate a valid subar‐
140 ray of a ; that is, if pos < 0 , or len < 0 , or pos + len > length a .
141
142
143
144 val copy : 'a array -> 'a array
145
146
147 copy a returns a copy of a , that is, a fresh array containing the same
148 elements as a .
149
150
151
152 val fill : 'a array -> pos:int -> len:int -> 'a -> unit
153
154
155 fill a ~pos ~len x modifies the array a in place, storing x in elements
156 number pos to pos + len - 1 .
157
158
159 Raises Invalid_argument if pos and len do not designate a valid subar‐
160 ray of a .
161
162
163
164 val blit : src:'a array -> src_pos:int -> dst:'a array -> dst_pos:int
165 -> len:int -> unit
166
167
168 blit ~src ~src_pos ~dst ~dst_pos ~len copies len elements from array
169 src , starting at element number src_pos , to array dst , starting at
170 element number dst_pos . It works correctly even if src and dst are the
171 same array, and the source and destination chunks overlap.
172
173
174 Raises Invalid_argument if src_pos and len do not designate a valid
175 subarray of src , or if dst_pos and len do not designate a valid subar‐
176 ray of dst .
177
178
179
180 val to_list : 'a array -> 'a list
181
182
183 to_list a returns the list of all the elements of a .
184
185
186
187 val of_list : 'a list -> 'a array
188
189
190 of_list l returns a fresh array containing the elements of l .
191
192
193
194 val iter : f:('a -> unit) -> 'a array -> unit
195
196
197 iter ~f a applies function f in turn to all the elements of a . It is
198 equivalent to f a.(0); f a.(1); ...; f a.(length a - 1); () .
199
200
201
202 val map : f:('a -> 'b) -> 'a array -> 'b array
203
204
205 map ~f a applies function f to all the elements of a , and builds an
206 array with the results returned by f : [| f a.(0); f a.(1); ...; f
207 a.(length a - 1) |] .
208
209
210
211 val iteri : f:(int -> 'a -> unit) -> 'a array -> unit
212
213 Same as ArrayLabels.iter , but the function is applied to the index of
214 the element as first argument, and the element itself as second argu‐
215 ment.
216
217
218
219 val mapi : f:(int -> 'a -> 'b) -> 'a array -> 'b array
220
221 Same as ArrayLabels.map , but the function is applied to the index of
222 the element as first argument, and the element itself as second argu‐
223 ment.
224
225
226
227 val fold_left : f:('a -> 'b -> 'a) -> init:'a -> 'b array -> 'a
228
229
230 fold_left ~f ~init a computes f (... (f (f init a.(0)) a.(1)) ...)
231 a.(n-1) , where n is the length of the array a .
232
233
234
235 val fold_right : f:('b -> 'a -> 'a) -> 'b array -> init:'a -> 'a
236
237
238 fold_right ~f a ~init computes f a.(0) (f a.(1) ( ... (f a.(n-1) init)
239 ...)) , where n is the length of the array a .
240
241
242
243
244 Iterators on two arrays
245 val iter2 : f:('a -> 'b -> unit) -> 'a array -> 'b array -> unit
246
247
248 iter2 ~f a b applies function f to all the elements of a and b .
249
250
251 Since 4.05.0
252
253
254 Raises Invalid_argument if the arrays are not the same size.
255
256
257
258 val map2 : f:('a -> 'b -> 'c) -> 'a array -> 'b array -> 'c array
259
260
261 map2 ~f a b applies function f to all the elements of a and b , and
262 builds an array with the results returned by f : [| f a.(0) b.(0); ...;
263 f a.(length a - 1) b.(length b - 1)|] .
264
265
266 Since 4.05.0
267
268
269 Raises Invalid_argument if the arrays are not the same size.
270
271
272
273
274 Array scanning
275 val exists : f:('a -> bool) -> 'a array -> bool
276
277
278 exists ~f [|a1; ...; an|] checks if at least one element of the array
279 satisfies the predicate f . That is, it returns (f a1) || (f a2) || ...
280 || (f an) .
281
282
283 Since 4.03.0
284
285
286
287 val for_all : f:('a -> bool) -> 'a array -> bool
288
289
290 for_all ~f [|a1; ...; an|] checks if all elements of the array satisfy
291 the predicate f . That is, it returns (f a1) && (f a2) && ... && (f an)
292 .
293
294
295 Since 4.03.0
296
297
298
299 val mem : 'a -> set:'a array -> bool
300
301
302 mem x ~set is true if and only if x is equal to an element of set .
303
304
305 Since 4.03.0
306
307
308
309 val memq : 'a -> set:'a array -> bool
310
311 Same as ArrayLabels.mem , but uses physical equality instead of struc‐
312 tural equality to compare list elements.
313
314
315 Since 4.03.0
316
317
318
319 val create_float : int -> float array
320
321
322 create_float n returns a fresh float array of length n , with unini‐
323 tialized data.
324
325
326 Since 4.03
327
328
329
330 val make_float : int -> float array
331
332 Deprecated.
333
334 ArrayLabels.make_float is an alias for ArrayLabels.create_float .
335
336
337
338
339 Sorting
340 val sort : cmp:('a -> 'a -> int) -> 'a array -> unit
341
342 Sort an array in increasing order according to a comparison function.
343 The comparison function must return 0 if its arguments compare as
344 equal, a positive integer if the first is greater, and a negative inte‐
345 ger if the first is smaller (see below for a complete specification).
346 For example, compare is a suitable comparison function, provided there
347 are no floating-point NaN values in the data. After calling sort , the
348 array is sorted in place in increasing order. sort is guaranteed to
349 run in constant heap space and (at most) logarithmic stack space.
350
351 The current implementation uses Heap Sort. It runs in constant stack
352 space.
353
354 Specification of the comparison function: Let a be the array and cmp
355 the comparison function. The following must be true for all x, y, z in
356 a :
357
358 - cmp x y > 0 if and only if cmp y x < 0
359
360 - if cmp x y >= 0 and cmp y z >= 0 then cmp x z >= 0
361
362 When sort returns, a contains the same elements as before, reordered in
363 such a way that for all i and j valid indices of a :
364
365 - cmp a.(i) a.(j) >= 0 if and only if i >= j
366
367
368
369
370 val stable_sort : cmp:('a -> 'a -> int) -> 'a array -> unit
371
372 Same as ArrayLabels.sort , but the sorting algorithm is stable (i.e.
373 elements that compare equal are kept in their original order) and not
374 guaranteed to run in constant heap space.
375
376 The current implementation uses Merge Sort. It uses n/2 words of heap
377 space, where n is the length of the array. It is usually faster than
378 the current implementation of ArrayLabels.sort .
379
380
381
382 val fast_sort : cmp:('a -> 'a -> int) -> 'a array -> unit
383
384 Same as ArrayLabels.sort or ArrayLabels.stable_sort , whichever is
385 faster on typical input.
386
387
388
389
390 Iterators
391 val to_seq : 'a array -> 'a Seq.t
392
393 Iterate on the array, in increasing order
394
395
396 Since 4.07
397
398
399
400 val to_seqi : 'a array -> (int * 'a) Seq.t
401
402 Iterate on the array, in increasing order, yielding indices along ele‐
403 ments
404
405
406 Since 4.07
407
408
409
410 val of_seq : 'a Seq.t -> 'a array
411
412 Create an array from the generator
413
414
415 Since 4.07
416
417
418
419
420
421OCamldoc 2020-02-27 Stdlib.ArrayLabels(3)