Module CArray.Smart

The functions defined in this module are optimized specializations of the main ones, when the returned array is of same type as one of the original array.

val map : ('a -> 'a) -> 'a array -> 'a array

Smart.map f a behaves as map f a but returns a instead of a copy when f x == x for all x in a.

val map_i : (int -> 'a -> 'a) -> 'a array -> 'a array
val map2 : ('a -> 'b -> 'b) -> 'a array -> 'b array -> 'b array

Smart.map2 f a b behaves as map2 f a b but returns a instead of a copy when f x y == y for all x in a and y in b pointwise.

val fold_left_map : ('a -> 'b -> 'a * 'b) -> 'a -> 'b array -> 'a * 'b array

Smart.fold_left_mapf a b behaves as fold_left_map but returns b as second component instead of a copy of b when the output array is pointwise the same as the input array b

val fold_left2_map : ('a -> 'b -> 'c -> 'a * 'c) -> 'a -> 'b array -> 'c array -> 'a * 'c array

Smart.fold_left2_map f a b c behaves as fold_left2_map but returns c as second component instead of a copy of c when the output array is pointwise the same as the input array c