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