|
|
Hi,
I can't see the CVS version, but I have a couple questions:
(1) What is the point of having two rev functions? Arrays are indexed, you can just access n-i instead of i.
(2) find_all should return a list. e.g. find_all in ExtHashtbl returns a list.
-Amit
On 11/24/05, Richard Jones <rich@xxxxxxxxxxx> wrote:
In CVS is an untested implementation with the following interface. I'm currently writing some tests for extlib-test.
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 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}. *)
(* -- NOT IMPLEMENTED 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 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
-- Richard Jones, CTO Merjis Ltd. Merjis - web marketing and technology -
http://merjis.com Team Notepad - intranets and extranets for business - http://team-notepad.com
------------------------------------------------------- This SF.net
email is sponsored by: Splunk Inc. Do you grep through log files for problems? Stop! Download the new AJAX search engine that makes searching your log files as easy as surfing the web. DOWNLOAD SPLUNK!
http://ads.osdn.com/?ad_id=7637&alloc_id=16865&op=click _______________________________________________ ocaml-lib-devel mailing list ocaml-lib-devel@xxxxxxxxxxxxxxxxxxxxx
https://lists.sourceforge.net/lists/listinfo/ocaml-lib-devel
|
| |