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