aboutsummaryrefslogtreecommitdiffhomepage
path: root/lib/cArray.mli
diff options
context:
space:
mode:
authorGravatar ppedrot <ppedrot@85f007b7-540e-0410-9357-904b9bb8a0f7>2012-09-18 16:00:57 +0000
committerGravatar ppedrot <ppedrot@85f007b7-540e-0410-9357-904b9bb8a0f7>2012-09-18 16:00:57 +0000
commit451ecf7eb4fbd8ffa2058cdb8bb57e0b25a70b59 (patch)
treec206b7a87f334ef189765b5fe0262dd4d8d1d9bc /lib/cArray.mli
parentbf08866eabad4408de975bae92f3b3c1f718322c (diff)
More cleaning in CArray...
git-svn-id: svn+ssh://scm.gforge.inria.fr/svn/coq/trunk@15819 85f007b7-540e-0410-9357-904b9bb8a0f7
Diffstat (limited to 'lib/cArray.mli')
-rw-r--r--lib/cArray.mli50
1 files changed, 42 insertions, 8 deletions
diff --git a/lib/cArray.mli b/lib/cArray.mli
index bf5648881..1738bb618 100644
--- a/lib/cArray.mli
+++ b/lib/cArray.mli
@@ -43,8 +43,14 @@ module type ExtS =
sig
include S
val compare : ('a -> 'a -> int) -> 'a array -> 'a array -> int
+ (** First size comparison, then lexicographic order. *)
+
val equal : ('a -> 'a -> bool) -> 'a array -> 'a array -> bool
+ (** Lift equality to array type. *)
+
val exists : ('a -> bool) -> 'a array -> bool
+ (** As [List.exists] but on arrays. *)
+
val for_all : ('a -> bool) -> 'a array -> bool
val for_all2 : ('a -> 'b -> bool) -> 'a array -> 'b array -> bool
val for_all3 : ('a -> 'b -> 'c -> bool) ->
@@ -52,12 +58,24 @@ sig
val for_all4 : ('a -> 'b -> 'c -> 'd -> bool) ->
'a array -> 'b array -> 'c array -> 'd array -> bool
val for_all_i : (int -> 'a -> bool) -> int -> 'a array -> bool
- val find_i : (int -> 'a -> bool) -> 'a array -> int option
+
+ val findi : (int -> 'a -> bool) -> 'a array -> int option
+
val hd : 'a array -> 'a
+ (** First element of an array, or [Failure "Array.hd"] if empty. *)
+
val tl : 'a array -> 'a array
+ (** Remaining part of [hd], or [Failure "Array.tl"] if empty. *)
+
val last : 'a array -> 'a
+ (** Last element of an array, or [Failure "Array.last"] if empty. *)
+
val cons : 'a -> 'a array -> 'a array
+ (** Append an element on the left. *)
+
val rev : 'a array -> unit
+ (** In place reversal. *)
+
val fold_right_i :
(int -> 'b -> 'a -> 'a) -> 'b array -> 'a -> 'a
val fold_left_i : (int -> 'a -> 'b -> 'a) -> 'a -> 'b array -> 'a
@@ -70,29 +88,45 @@ sig
val fold_left2_i :
(int -> 'a -> 'b -> 'c -> 'a) -> 'a -> 'b array -> 'c array -> 'a
val fold_left_from : int -> ('a -> 'b -> 'a) -> 'a -> 'b array -> 'a
- val fold_right_from : int -> ('a -> 'b -> 'b) -> 'a array -> 'b -> 'b
- val app_tl : 'a array -> 'a list -> 'a list
- val list_of_tl : 'a array -> 'a list
+
val map_to_list : ('a -> 'b) -> 'a array -> 'b list
+ (** Composition of [map] and [to_list]. *)
+
val chop : int -> 'a array -> 'a array * 'a array
+ (** [chop i a] returns [(a1, a2)] s.t. [a = a1 + a2] and [length a1 = n].
+ Raise [Failure "Array.chop"] if [i] is not a valid index. *)
+
val smartmap : ('a -> 'a) -> 'a array -> 'a array
+ (** [smartmap f a] behaves as [map f a] but returns [a] instead of a copy when
+ [f x == x] for all [x] in [a]. *)
+
val map2 : ('a -> 'b -> 'c) -> 'a array -> 'b array -> 'c array
val map2_i : (int -> 'a -> 'b -> 'c) -> 'a array -> 'b array -> 'c array
val map3 :
('a -> 'b -> 'c -> 'd) -> 'a array -> 'b array -> 'c array -> 'd array
+
val map_left : ('a -> 'b) -> 'a array -> 'b array
- val map_left_pair : ('a -> 'b) -> 'a array -> ('c -> 'd) -> 'c array ->
- 'b array * 'd array
+ (** As [map] but guaranteed to be left-to-right. *)
+
val iter2 : ('a -> 'b -> unit) -> 'a array -> 'b array -> unit
+ (** Iter on two arrays. Raise [Invalid_argument "Array.iter2" if sizes differ. *)
+
val fold_map' : ('a -> 'c -> 'b * 'c) -> 'a array -> 'c -> 'b array * 'c
val fold_map : ('a -> 'b -> 'a * 'c) -> 'a -> 'b array -> 'a * 'c array
val fold_map2' :
('a -> 'b -> 'c -> 'd * 'c) -> 'a array -> 'b array -> 'c -> 'd array * 'c
+
val distinct : 'a array -> bool
- val union_map : ('a -> 'b -> 'b) -> 'a array -> 'b -> 'b
+ (** Return [true] if every element of the array is unique (for default
+ equality). *)
+
val rev_to_list : 'a array -> 'a list
- val filter_along : ('a -> bool) -> 'a list -> 'b array -> 'b array
+ (** [rev_to_list a] is equivalent to [List.rev (List.of_array a)]. *)
+
val filter_with : bool list -> 'a array -> 'a array
+ (** [filter_with b a] selects elements of [a] whose corresponding element in
+ [b] is [true]. Raise [Invalid_argument _] when sizes differ. *)
+
end
include ExtS