CCFun(cleanup): align CCFun.compose with the stdlib

Conditionally define CCFun.compose and align its definition with the
stdlib. The arguments are now swapped.
This commit is contained in:
Fardale 2024-12-25 14:27:47 +01:00 committed by Emmanuel Arrighi
parent 74b787f7e6
commit b649ac9dc5
3 changed files with 20 additions and 7 deletions

View file

@ -1,7 +1,8 @@
## main
- change the semantic of CCFloat.{min,max} with respect to NaN to follow the Stdlib
- change the semantic of CCInt.rem with respect to negative number to follow the Stdlib
- breaking: invert the argument of CCFun.compose to align it with the Stdlib
- breaking: change the semantic of CCFloat.{min,max} with respect to NaN to follow the Stdlib
- breaking: change the semantic of CCInt.rem with respect to negative number to follow the Stdlib
## 3.17

View file

@ -10,7 +10,13 @@ include Fun
let[@inline] and_pred f g x = f x && g x
let[@inline] or_pred f g x = f x || g x
let[@inline] compose f g x = g (f x)
[@@@iflt 5.2]
let[@inline] compose f g x = f (g x)
[@@@endif]
let[@inline] compose_binop f g x y = g (f x) (f y)
let[@inline] curry f x y = f (x, y)
let[@inline] uncurry f (x, y) = f x y
@ -70,7 +76,7 @@ let[@inline] with_return (type ret) f : ret =
module Infix = struct
(* default implem for some operators *)
let ( %> ) = compose
let ( %> ) f g = compose g f
let[@inline] ( % ) f g x = f (g x)
let ( let@ ) = ( @@ )
let ( ||> ) (a, b) f = f a b

View file

@ -17,8 +17,13 @@ val or_pred : ('a -> bool) -> ('a -> bool) -> 'a -> bool
@since 3.13.1
*)
val compose : ('a -> 'b) -> ('b -> 'c) -> 'a -> 'c
(** [compose f g x] is [g (f x)]. Composition. *)
[@@@iflt 5.2]
val compose : ('b -> 'c) -> ('a -> 'b) -> 'a -> 'c
(** [compose f g x] is [f (g x)]. Composition.
@since NEXT_RELEASE arguments are inversted *)
[@@@endif]
val compose_binop : ('a -> 'b) -> ('b -> 'b -> 'c) -> 'a -> 'a -> 'c
(** [compose_binop f g] is [fun x y -> g (f x) (f y)].
@ -100,7 +105,8 @@ let find_array arr x =
module Infix : sig
val ( %> ) : ('a -> 'b) -> ('b -> 'c) -> 'a -> 'c
(** [(f %> g) x] or [(%>) f g x] is [g (f x)]. Alias to [compose]. *)
(** [(f %> g) x] or [(%>) f g x] is [g (f x)]. Infix version of [compose].
The order of the arguments of [%>] and {!compose} are inverted. *)
val ( % ) : ('b -> 'c) -> ('a -> 'b) -> 'a -> 'c
(** [(f % g) x] or [(%) f g x] is [f (g x)]. Mathematical composition. *)