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..f74d7d43 100644 --- a/src/data/CCImmutArray.mli +++ b/src/data/CCImmutArray.mli @@ -36,6 +36,15 @@ 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 + 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 val mapi : (int -> 'a -> 'b) -> 'a t -> 'b t