diff --git a/src/core/CCFun.ml b/src/core/CCFun.ml index 242032a5..65c9a5d5 100644 --- a/src/core/CCFun.ml +++ b/src/core/CCFun.ml @@ -64,6 +64,8 @@ module Infix = struct let ( %> ) = compose let[@inline] ( % ) f g x = f (g x) let ( let@ ) = ( @@ ) + let ( ||> ) (a, b) f = f a b + let ( |||> ) (a, b, c) f = f a b c end include Infix diff --git a/src/core/CCFun.mli b/src/core/CCFun.mli index 5476b580..1557f780 100644 --- a/src/core/CCFun.mli +++ b/src/core/CCFun.mli @@ -81,6 +81,14 @@ module Infix : sig (** [let@ x = foo in bar] is the equivalent of [foo @@ fun x -> bar]. It can be very useful for resource management, alongside with {!protect}. @since 3.11 *) + + val ( ||> ) : 'a * 'b -> ('a -> 'b -> 'c) -> 'c + (** [x ||> f] is [f (fst x) (snd x)] + @since NEXT_RELEASE *) + + val ( |||> ) : 'a * 'b * 'c -> ('a -> 'b -> 'c -> 'd) -> 'd + (** like [||>] but for tuples of size 3 + @since NEXT_RELEASE *) end include module type of Infix