CArray.SmartThe 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.
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.
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.
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