From b81fafbb8fbcba0cd54ea93fd44e6bd69540324a Mon Sep 17 00:00:00 2001 From: Hugo Herbelin Date: Thu, 5 Apr 2018 11:33:30 +0200 Subject: CArray: adding combinators. --- clib/cArray.mli | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'clib/cArray.mli') diff --git a/clib/cArray.mli b/clib/cArray.mli index 9c2f521f4a..56cc3656d4 100644 --- a/clib/cArray.mli +++ b/clib/cArray.mli @@ -86,9 +86,16 @@ sig (** [smartmap f a] behaves as [map f a] but returns [a] instead of a copy when [f x == x] for all [x] in [a]. *) + val smartmap2 : ('a -> 'b -> 'b) -> 'a array -> 'b array -> 'b array + (** [smartmap2 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 smartfoldmap : ('r -> 'a -> 'r * 'a) -> 'r -> 'a array -> 'r * 'a array (** Same as [smartmap] but threads an additional state left-to-right. *) + val smartfoldmap2 : ('r -> 'a -> 'b -> 'r * 'b) -> 'r -> 'a array -> 'b array -> 'r * 'b array + (** Same as [smartmap2] but threads an additional state left-to-right. *) + val map2 : ('a -> 'b -> 'c) -> 'a array -> 'b array -> 'c array val map2_i : (int -> 'a -> 'b -> 'c) -> 'a array -> 'b array -> 'c array val map3 : @@ -152,6 +159,9 @@ sig val iter : ('r -> 'a -> unit) -> 'r -> 'a array -> unit (** [Fun1.iter f x v = iter (f x) v] *) + val iter2 : ('r -> 'a -> 'b -> unit) -> 'r -> 'a array -> 'b array -> unit + (** [Fun1.iter2 f x v1 v2 = iter (f x) v1 v2] *) + end (** The functions defined in this module are the same as the main ones, except that they are all higher-order, and their function arguments have an -- cgit v1.2.3