diff --git a/src/core/CCArray.ml b/src/core/CCArray.ml index b424be94..37020788 100644 --- a/src/core/CCArray.ml +++ b/src/core/CCArray.ml @@ -540,6 +540,18 @@ let pp_i ?(sep=", ") pp_item out a = pp_item k out a.(k) done +let to_string ?(sep=", ") item_to_string a = + Array.to_list a + |> List.map item_to_string + |> String.concat sep + +(*$= to_string & ~printer:(fun s -> s) + (to_string string_of_int [|1;2;3;4;5;6|]) "1, 2, 3, 4, 5, 6" + (to_string string_of_int [||]) "" + (to_string ~sep:" " string_of_int [|1;2;3;4;5;6|]) "1 2 3 4 5 6" + (to_string string_of_int [|1|]) "1" +*) + let to_seq a k = iter k a let to_gen a = diff --git a/src/core/CCArray.mli b/src/core/CCArray.mli index cc6738e5..e25c68ca 100644 --- a/src/core/CCArray.mli +++ b/src/core/CCArray.mli @@ -244,6 +244,11 @@ val random_choose : 'a t -> 'a random_gen (** [random_choose a rs] randomly chooses an element of [a]. @raise Not_found if the array/slice is empty. *) +val to_string : ?sep:string -> ('a -> string) -> 'a array -> string +(** [to_string ~sep item_to_string a] print [a] to a string using [sep] as a separator + between elements of [a]. + @since NEXT_RELEASE *) + val to_seq : 'a t -> 'a sequence (** [to_seq a] returns a [sequence] of the elements of an array [a]. The input array [a] is shared with the sequence and modification of it will result