diff --git a/gen/gen.ml b/gen/gen.ml index 8aa35265..ba243e3d 100644 --- a/gen/gen.ml +++ b/gen/gen.ml @@ -1362,6 +1362,7 @@ module Infix = struct let (--) = int_range let (>>=) x f = flat_map f x + let (>>|) x f = map f x end include Infix @@ -1543,6 +1544,7 @@ module Restart = struct let (--) = int_range let (>>=) x f = flat_map f x + let (>>|) x f = map f x end include Infix diff --git a/gen/gen_intf.ml b/gen/gen_intf.ml index 87208338..069eda9b 100644 --- a/gen/gen_intf.ml +++ b/gen/gen_intf.ml @@ -306,6 +306,9 @@ module type S = sig val (>>=) : 'a t -> ('a -> 'b gen) -> 'b t (** Monadic bind operator *) + + val (>>|) : 'a t -> ('a -> 'b) -> 'b t + (** Monadic map operator *) end val (--) : int -> int -> int t @@ -314,6 +317,9 @@ module type S = sig val (>>=) : 'a t -> ('a -> 'b gen) -> 'b t (** Monadic bind operator *) + val (>>|) : 'a t -> ('a -> 'b) -> 'b t + (** Monadic map operator *) + val pp : ?start:string -> ?stop:string -> ?sep:string -> ?horizontal:bool -> (Format.formatter -> 'a -> unit) -> Format.formatter -> 'a t -> unit (** Pretty print the content of the generator on a formatter. *) diff --git a/gen/tests/test_gen.ml b/gen/tests/test_gen.ml index fc968ab1..0432fd5e 100644 --- a/gen/tests/test_gen.ml +++ b/gen/tests/test_gen.ml @@ -42,7 +42,7 @@ let test_iter () = let test_map () = let e = 1 -- 10 in - let e' = Gen.map string_of_int e in + let e' = e >>| string_of_int in OUnit.assert_equal ~printer:pstrlist ["9"; "10"] (Gen.to_list (Gen.drop 8 e')); ()