Merge pull request #458 from benbellick/add-predicate-combinator

predicate combinators: and_p and or_p
This commit is contained in:
Simon Cruanes 2024-09-03 13:11:50 -04:00 committed by GitHub
commit 5abb63517c
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 13 additions and 0 deletions

View file

@ -8,8 +8,11 @@ include Sys
include Stdlib
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)
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

View file

@ -5,6 +5,16 @@
include module type of Fun
(** @inline *)
val and_pred : ('a -> bool) -> ('a -> bool) -> 'a -> bool
(** [and_p f g x] is [(f x) && (g x)].
Produces a predicate which is a conjunction of the two predicates.
*)
val or_pred : ('a -> bool) -> ('a -> bool) -> 'a -> bool
(** [or_p f g x] is [(f x) || (g x)].
Produces a predicate which is a disjunction of the two predicates.
*)
val compose : ('a -> 'b) -> ('b -> 'c) -> 'a -> 'c
(** [compose f g x] is [g (f x)]. Composition. *)