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