From 02c3e954bf4ec5a2289d5e907069a1ccd65500eb Mon Sep 17 00:00:00 2001 From: Simon Cruanes Date: Thu, 4 May 2023 12:33:00 -0400 Subject: [PATCH] add let operators in Infix --- src/Iter.ml | 4 ++++ src/Iter.mli | 16 ++++++++++++++++ 2 files changed, 20 insertions(+) diff --git a/src/Iter.ml b/src/Iter.ml index 7e1d2ad..cfec399 100644 --- a/src/Iter.ml +++ b/src/Iter.ml @@ -1115,6 +1115,10 @@ module Infix = struct let[@inline] ( >|= ) x f = map f x let[@inline] ( <*> ) funs args k = funs (fun f -> args (fun x -> k (f x))) let ( <+> ) = append + let[@inline] ( let+ ) x f = map f x + let[@inline] ( let* ) x f = flat_map f x + let ( and+ ) = product + let ( and* ) = product end include Infix diff --git a/src/Iter.mli b/src/Iter.mli index e833fff..c7cff8d 100644 --- a/src/Iter.mli +++ b/src/Iter.mli @@ -794,6 +794,22 @@ module Infix : sig val ( <+> ) : 'a t -> 'a t -> 'a t (** Concatenation of iterators @since 0.5 *) + + val ( let+ ) : 'a t -> ('a -> 'b) -> 'b t + (** Alias for {!map} + @since NEXT_RELEASE *) + + val ( and+ ) : 'a t -> 'b t -> ('a * 'b) t + (** Alias for {!product} + @since NEXT_RELEASE *) + + val ( let* ) : 'a t -> ('a -> 'b t) -> 'b t + (** Alias for {!flat_map} + @since NEXT_RELEASE *) + + val ( and* ) : 'a t -> 'b t -> ('a * 'b) t + (** Alias for {!product} + @since NEXT_RELEASE *) end include module type of Infix