From: Amit D. <ami...@gm...> - 2005-11-24 19:08:35
|
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 <ri...@an...> 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 =3D "%array_length" > external get : 'a array -> int -> 'a =3D "%array_safe_get" > external set : 'a array -> int -> 'a -> unit =3D "%array_safe_set" > external make : int -> 'a -> 'a array =3D "caml_make_vect" > external create : int -> 'a -> 'a array =3D "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 =3D "%array_unsafe_get" > external unsafe_set : 'a array -> int -> 'a -> unit =3D > "%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=3D7637&alloc_id=3D16865&op=3Dclick > _______________________________________________ > ocaml-lib-devel mailing list > oca...@li... > https://lists.sourceforge.net/lists/listinfo/ocaml-lib-devel > |