如何编写布尔返回函数
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
但我认为这不是值得担心的事情。有争论是完全没问题的。
我有几个带有签名 '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
但我认为这不是值得担心的事情。有争论是完全没问题的。