From c49458d92333f10eea6a315a866937f928eeedb5 Mon Sep 17 00:00:00 2001 From: SP Date: Mon, 20 Nov 2017 16:14:04 +0000 Subject: [PATCH 1/2] Implement CCImmutArray.sub, but creates a copy --- src/data/CCImmutArray.ml | 2 ++ src/data/CCImmutArray.mli | 5 +++++ 2 files changed, 7 insertions(+) diff --git a/src/data/CCImmutArray.ml b/src/data/CCImmutArray.ml index d85b9909..1165b6af 100644 --- a/src/data/CCImmutArray.ml +++ b/src/data/CCImmutArray.ml @@ -27,6 +27,8 @@ let set a n x = a'.(n) <- x; a' +let sub = Array.sub (* Would this not be better implemented with CCArray_slice *) + let map = Array.map let mapi = Array.mapi diff --git a/src/data/CCImmutArray.mli b/src/data/CCImmutArray.mli index 77e0666d..3bb7c4d5 100644 --- a/src/data/CCImmutArray.mli +++ b/src/data/CCImmutArray.mli @@ -36,6 +36,11 @@ val get : 'a t -> int -> 'a val set : 'a t -> int -> 'a -> 'a t (** Copy the array and modify its copy *) +val sub : 'a t -> int -> int -> 'a t +(** [sub a start len] returns a fresh array of length len, containing the elements number start to start + len - 1 of array a. + Raises [Invalid_argument "Array.sub"] if start and len do not designate a valid subarray of a; that is, if start < 0, or len < 0, or start + len > Array.length a. *) + + val map : ('a -> 'b) -> 'a t -> 'b t val mapi : (int -> 'a -> 'b) -> 'a t -> 'b t From a28dd399f4b2f1629883b001b2b70313aae32fae Mon Sep 17 00:00:00 2001 From: Stavros Polymenis Date: Mon, 20 Nov 2017 20:42:17 +0000 Subject: [PATCH 2/2] Improve CCImmutArray.sub comments and versioning --- src/data/CCImmutArray.mli | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/data/CCImmutArray.mli b/src/data/CCImmutArray.mli index 3bb7c4d5..f74d7d43 100644 --- a/src/data/CCImmutArray.mli +++ b/src/data/CCImmutArray.mli @@ -37,9 +37,13 @@ val set : 'a t -> int -> 'a -> 'a t (** Copy the array and modify its copy *) val sub : 'a t -> int -> int -> 'a t -(** [sub a start len] returns a fresh array of length len, containing the elements number start to start + len - 1 of array a. - Raises [Invalid_argument "Array.sub"] if start and len do not designate a valid subarray of a; that is, if start < 0, or len < 0, or start + len > Array.length a. *) - +(** [sub a start len] returns a fresh array of length len, containing the elements + from [start] to pstart + len - 1] of array a. + + Raises [Invalid_argument "Array.sub"] if [start] and [len] do not designate a + valid subarray of a; that is, if start < 0, or len < 0, or start + len > Array.length a. + + @since NEXT_RELEASE *) val map : ('a -> 'b) -> 'a t -> 'b t