/usr/lib/ocaml/extlib/extArray.mli is in libextlib-ocaml-dev 1.5.4-2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 | (*
* ExtArray - additional and modified functions for arrays.
* Copyright (C) 2005 Richard W.M. Jones (rich @ annexia.org)
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version,
* with the special exception on linking described in file LICENSE.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*)
(** Additional and modified functions for arrays.
The OCaml standard library provides a module of array functions.
This ExtArray module can be used to override the Array module or
as a standalone module. It provides some additional functions.
*)
module Array :
sig
(** {6 New functions} *)
val rev : 'a array -> 'a array
(** Array reversal. *)
val rev_in_place : 'a array -> unit
(** In-place array reversal. The array argument is updated. *)
val iter2 : ('a -> 'b -> unit) -> 'a array -> 'b array -> unit
(** [Array.iter2 f [|a1; ...; an|] [|b1; ...; bn|]] performs
calls [f a1 b1; ...; f an bn] in that order.
@raise Invalid_argument if the length of [a1] does not equal the
length of [a2]. *)
val map2 : ('a -> 'b -> 'c) -> 'a array -> 'b array -> 'c array
(** [Array.map2 f [|a1; ...; an|] [|b1; ...; bn|]] creates new array
[[|f a1 b1; ...; f an bn|]].
@raise Invalid_argument if the length of [a1] does not equal the
length of [a2]. *)
val for_all : ('a -> bool) -> 'a array -> bool
(** [for_all p [a1; ...; an]] checks if all elements of the array
satisfy the predicate [p]. That is, it returns
[ (p a1) && (p a2) && ... && (p an)].
*)
val exists : ('a -> bool) -> 'a array -> bool
(** [exists p [a1; ...; an]] checks if at least one element of
the array satisfies the predicate [p]. That is, it returns
[ (p a1) || (p a2) || ... || (p an)].
*)
val mem : 'a -> 'a array -> bool
(** [mem m a] is true if and only if [m] is equal to an element of [a]. *)
val memq : 'a -> 'a array -> bool
(** Same as {!Array.mem} but uses physical equality instead of
structural equality to compare array elements.
*)
val find : ('a -> bool) -> 'a array -> 'a
(** [find p a] returns the first element of array [a]
that satisfies the predicate [p].
Raise [Not_found] if there is no value that satisfies [p] in the
array [a].
*)
val findi : ('a -> bool) -> 'a array -> int
(** [findi p a] returns the index of the first element of array [a]
that satisfies the predicate [p].
Raise [Not_found] if there is no value that satisfies [p] in the
array [a].
*)
val filter : ('a -> bool) -> 'a array -> 'a array
(** [filter p a] returns all the elements of the array [a]
that satisfy the predicate [p]. The order of the elements
in the input array is preserved. *)
val find_all : ('a -> bool) -> 'a array -> 'a array
(** [find_all] is another name for {!Array.filter}. *)
val partition : ('a -> bool) -> 'a array -> 'a array * 'a array
(** [partition p a] returns a pair of arrays [(a1, a2)], where
[a1] is the array of all the elements of [a] that
satisfy the predicate [p], and [a2] is the array of all the
elements of [a] that do not satisfy [p].
The order of the elements in the input array is preserved. *)
(** {6 Enumerations} *)
val enum : 'a array -> 'a Enum.t
(** Returns an enumeration of the elements of an array. *)
val of_enum : 'a Enum.t -> 'a array
(** Build an array from an enumeration. *)
(** {6 Old functions} *)
(** These functions are already part of the Ocaml standard library
and have not been modified. Please refer to the Ocaml Manual for
documentation. *)
external length : 'a array -> int = "%array_length"
external get : 'a array -> int -> 'a = "%array_safe_get"
external set : 'a array -> int -> 'a -> unit = "%array_safe_set"
external make : int -> 'a -> 'a array = "caml_make_vect"
external create : int -> 'a -> 'a array = "caml_make_vect"
val init : int -> (int -> 'a) -> 'a array
val make_matrix : int -> int -> 'a -> 'a array array
val create_matrix : int -> int -> 'a -> 'a array array
val append : 'a array -> 'a array -> 'a array
val concat : 'a array list -> 'a array
val sub : 'a array -> int -> int -> 'a array
val copy : 'a array -> 'a array
val fill : 'a array -> int -> int -> 'a -> unit
val blit : 'a array -> int -> 'a array -> int -> int -> unit
val to_list : 'a array -> 'a list
val of_list : 'a list -> 'a array
val iter : ('a -> unit) -> 'a array -> unit
val map : ('a -> 'b) -> 'a array -> 'b array
val iteri : (int -> 'a -> unit) -> 'a array -> unit
val mapi : (int -> 'a -> 'b) -> 'a array -> 'b array
val fold_left : ('a -> 'b -> 'a) -> 'a -> 'b array -> 'a
val fold_right : ('b -> 'a -> 'a) -> 'b array -> 'a -> 'a
val sort : ('a -> 'a -> int) -> 'a array -> unit
val stable_sort : ('a -> 'a -> int) -> 'a array -> unit
val fast_sort : ('a -> 'a -> int) -> 'a array -> unit
external unsafe_get : 'a array -> int -> 'a = "%array_unsafe_get"
external unsafe_set : 'a array -> int -> 'a -> unit = "%array_unsafe_set"
end
|