From b7db149e27eb62c5d5ac584bb3777662d9af388f Mon Sep 17 00:00:00 2001 From: Simon Cruanes Date: Tue, 1 Nov 2016 11:27:07 +0100 Subject: [PATCH] add `CCArray.Sub.to_list` --- src/core/CCArray.ml | 3 +++ src/core/CCArray.mli | 4 ++++ 2 files changed, 7 insertions(+) diff --git a/src/core/CCArray.ml b/src/core/CCArray.ml index 9058c53e..142bda9d 100644 --- a/src/core/CCArray.ml +++ b/src/core/CCArray.ml @@ -709,6 +709,9 @@ module Sub = struct else _fold (f acc a.arr.(i)) (i+1) j in _fold acc a.i a.j + let to_list a = + fold (fun l x -> x::l) [] a |> List.rev + let foldi f acc a = _foldi f acc a.arr a.i a.j let fold_while f acc a = diff --git a/src/core/CCArray.mli b/src/core/CCArray.mli index 53e36181..44f7cc7b 100644 --- a/src/core/CCArray.mli +++ b/src/core/CCArray.mli @@ -247,6 +247,10 @@ module Sub : sig (** Convert into a triple [(arr, i, len)] where [len] is the length of the subarray of [arr] starting at offset [i] *) + val to_list : 'a t -> 'a list + (** Convert directly to a list + @since NEXT_RELEASE *) + val full : 'a array -> 'a t (** Slice that covers the full array *)