Merge pull request #8808 from ProofOfKeags/fn/predicate-combinators

fn: add predicate combinators for && and ||
This commit is contained in:
Oliver Gugger 2024-06-05 14:03:19 +02:00 committed by GitHub
commit 0fadf97e72
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

20
fn/predicate.go Normal file
View File

@ -0,0 +1,20 @@
package fn
// Pred[A] is a type alias for a predicate operating over type A.
type Pred[A any] func(A) bool
// PredAnd is a lifted version of the && operation that operates over functions
// producing a boolean value from some type A.
func PredAnd[A any](p0 Pred[A], p1 Pred[A]) Pred[A] {
return func(a A) bool {
return p0(a) && p1(a)
}
}
// PredOr is a lifted version of the || operation that operates over functions
// producing a boolean value from some type A.
func PredOr[A any](p0 Pred[A], p1 Pred[A]) Pred[A] {
return func(a A) bool {
return p0(a) || p1(a)
}
}