improve IArray

This commit is contained in:
Simon Cruanes 2018-02-19 19:46:08 -06:00
parent 57591ba042
commit 582f1aad18
2 changed files with 22 additions and 0 deletions

View file

@ -73,6 +73,20 @@ let of_list = Array.of_list
let to_list = Array.to_list
let of_list_map f l =
match l with
| [] -> empty
| x :: _ ->
let arr = make (List.length l) (f x) in
List.iteri (fun i x -> Array.unsafe_set arr i (f x)) l;
arr
let to_list_map f a =
CCArray.fold_right (fun x acc -> f x :: acc) a []
let of_array_map = Array.map
let to_array_map = Array.map
let of_array_unsafe a = a (* careful with that axe, Eugene *)
let to_seq a k = iter k a

View file

@ -60,6 +60,14 @@ val of_list : 'a list -> 'a t
val to_list : 'a t -> 'a list
val of_list_map : ('a -> 'b) -> 'a list -> 'b t
val to_list_map : ('a -> 'b) -> 'a t -> 'b list
val of_array_map : ('a -> 'b) -> 'a array -> 'b t
val to_array_map : ('a -> 'b) -> 'a t -> 'b array
val of_array_unsafe : 'a array -> 'a t
(** Take ownership of the given array. Careful, the array must {b NOT}
be modified afterwards! *)