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 for_all2 : f:('a -> 'b -> bool) -> 'a array -> 'b array -> bool
300
301 Same as ArrayLabels.for_all , but for a two-argument predicate.
302
303
304 Since 4.11.0
305
306
307 Raises Invalid_argument if the two arrays have different lengths.
308
309
310
311 val exists2 : f:('a -> 'b -> bool) -> 'a array -> 'b array -> bool
312
313 Same as ArrayLabels.exists , but for a two-argument predicate.
314
315
316 Since 4.11.0
317
318
319 Raises Invalid_argument if the two arrays have different lengths.
320
321
322
323 val mem : 'a -> set:'a array -> bool
324
325
326 mem x ~set is true if and only if x is equal to an element of set .
327
328
329 Since 4.03.0
330
331
332
333 val memq : 'a -> set:'a array -> bool
334
335 Same as ArrayLabels.mem , but uses physical equality instead of struc‐
336 tural equality to compare list elements.
337
338
339 Since 4.03.0
340
341
342
343 val create_float : int -> float array
344
345
346 create_float n returns a fresh float array of length n , with unini‐
347 tialized data.
348
349
350 Since 4.03
351
352
353
354 val make_float : int -> float array
355
356 Deprecated.
357
358 ArrayLabels.make_float is an alias for ArrayLabels.create_float .
359
360
361
362
363 Sorting
364 val sort : cmp:('a -> 'a -> int) -> 'a array -> unit
365
366 Sort an array in increasing order according to a comparison function.
367 The comparison function must return 0 if its arguments compare as
368 equal, a positive integer if the first is greater, and a negative inte‐
369 ger if the first is smaller (see below for a complete specification).
370 For example, compare is a suitable comparison function, provided there
371 are no floating-point NaN values in the data. After calling sort , the
372 array is sorted in place in increasing order. sort is guaranteed to
373 run in constant heap space and (at most) logarithmic stack space.
374
375 The current implementation uses Heap Sort. It runs in constant stack
376 space.
377
378 Specification of the comparison function: Let a be the array and cmp
379 the comparison function. The following must be true for all x, y, z in
380 a :
381
382 - cmp x y > 0 if and only if cmp y x < 0
383
384 - if cmp x y >= 0 and cmp y z >= 0 then cmp x z >= 0
385
386 When sort returns, a contains the same elements as before, reordered in
387 such a way that for all i and j valid indices of a :
388
389 - cmp a.(i) a.(j) >= 0 if and only if i >= j
390
391
392
393
394 val stable_sort : cmp:('a -> 'a -> int) -> 'a array -> unit
395
396 Same as ArrayLabels.sort , but the sorting algorithm is stable (i.e.
397 elements that compare equal are kept in their original order) and not
398 guaranteed to run in constant heap space.
399
400 The current implementation uses Merge Sort. It uses n/2 words of heap
401 space, where n is the length of the array. It is usually faster than
402 the current implementation of ArrayLabels.sort .
403
404
405
406 val fast_sort : cmp:('a -> 'a -> int) -> 'a array -> unit
407
408 Same as ArrayLabels.sort or ArrayLabels.stable_sort , whichever is
409 faster on typical input.
410
411
412
413
414 Iterators
415 val to_seq : 'a array -> 'a Seq.t
416
417 Iterate on the array, in increasing order
418
419
420 Since 4.07
421
422
423
424 val to_seqi : 'a array -> (int * 'a) Seq.t
425
426 Iterate on the array, in increasing order, yielding indices along ele‐
427 ments
428
429
430 Since 4.07
431
432
433
434 val of_seq : 'a Seq.t -> 'a array
435
436 Create an array from the generator
437
438
439 Since 4.07
440
441
442
443
444
445OCamldoc 2020-09-01 Stdlib.ArrayLabels(3)