mirror of
https://github.com/c-cube/ocaml-containers.git
synced 2025-12-06 03:05:28 -05:00
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:
parent
931b28ec47
commit
2aa8416b1c
3 changed files with 20 additions and 7 deletions
|
|
@ -1,8 +1,9 @@
|
||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
## main
|
## main
|
||||||
- change the semantic of CCFloat.{min,max} with respect to NaN to follow the Stdlib
|
- breaking: invert the argument of CCFun.compose to align it with the Stdlib
|
||||||
- change the semantic of CCInt.rem with respect to negative number to follow 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.15
|
## 3.15
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,13 @@ include Fun
|
||||||
|
|
||||||
let[@inline] and_pred f g x = f x && g x
|
let[@inline] and_pred f g x = f x && g x
|
||||||
let[@inline] or_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] compose_binop f g x y = g (f x) (f y)
|
||||||
let[@inline] curry f x y = f (x, y)
|
let[@inline] curry f x y = f (x, y)
|
||||||
let[@inline] uncurry f (x, y) = f x y
|
let[@inline] uncurry f (x, y) = f x y
|
||||||
|
|
@ -63,7 +69,7 @@ let rec iterate n f x =
|
||||||
|
|
||||||
module Infix = struct
|
module Infix = struct
|
||||||
(* default implem for some operators *)
|
(* default implem for some operators *)
|
||||||
let ( %> ) = compose
|
let ( %> ) f g = compose g f
|
||||||
let[@inline] ( % ) f g x = f (g x)
|
let[@inline] ( % ) f g x = f (g x)
|
||||||
let ( let@ ) = ( @@ )
|
let ( let@ ) = ( @@ )
|
||||||
let ( ||> ) (a, b) f = f a b
|
let ( ||> ) (a, b) f = f a b
|
||||||
|
|
|
||||||
|
|
@ -17,8 +17,13 @@ val or_pred : ('a -> bool) -> ('a -> bool) -> 'a -> bool
|
||||||
@since 3.13.1
|
@since 3.13.1
|
||||||
*)
|
*)
|
||||||
|
|
||||||
val compose : ('a -> 'b) -> ('b -> 'c) -> 'a -> 'c
|
[@@@iflt 5.2]
|
||||||
(** [compose f g x] is [g (f x)]. Composition. *)
|
|
||||||
|
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
|
val compose_binop : ('a -> 'b) -> ('b -> 'b -> 'c) -> 'a -> 'a -> 'c
|
||||||
(** [compose_binop f g] is [fun x y -> g (f x) (f y)].
|
(** [compose_binop f g] is [fun x y -> g (f x) (f y)].
|
||||||
|
|
@ -84,7 +89,8 @@ val iterate : int -> ('a -> 'a) -> 'a -> 'a
|
||||||
|
|
||||||
module Infix : sig
|
module Infix : sig
|
||||||
val ( %> ) : ('a -> 'b) -> ('b -> 'c) -> 'a -> 'c
|
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
|
val ( % ) : ('b -> 'c) -> ('a -> 'b) -> 'a -> 'c
|
||||||
(** [(f % g) x] or [(%) f g x] is [f (g x)]. Mathematical composition. *)
|
(** [(f % g) x] or [(%) f g x] is [f (g x)]. Mathematical composition. *)
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue