如何编写布尔返回函数

How to compose bool-returning functions

我有几个带有签名 'a -> bool 的过滤器函数。我想创建一个包含不同过滤器的组合过滤器。我知道我可以这样做:

let fCombined x =
    f1 x 
    && f2 x
    && f3 x

是否有任何更简洁的方法来直接组合函数而不完全应用它们(例如通过从 fCombined 的定义中删除 x)?

(我知道还有其他不使用 bool 的方法,例如使用 'a -> 'a option 函数并使用 Option.bind 组合它们,但这并不更简洁。)

如果你想失去参数x,你可以让自己成为一个特殊的运算符:

let (&&.) f g x = f x && g x

let fCombined = f1 &&. f2 &&. f3

但我认为这不是值得担心的事情。有争论是完全没问题的。