我需要这种类型的二进制组合器
(a -> Bool) -> (a -> Bool) -> a -> Bool
或者可能
[a -> Bool] -> a -> Bool
(虽然这只是第一个的 foldr1,我通常只需要组合两个布尔函数。)
这些是内置的吗?
如果没有,实现很简单:
both f g x = f x && g x
either f g x = f x || g x
也许
allF fs x = foldr (\ f b -> b && f x) True fs
anyF fs x = foldr (\ f b -> b || f x) False fs
Hoogle 什么也没找到,但有时它的搜索并不能正确概括。知道这些是否是内置的吗?它们可以从现有库的片段中构建吗?
如果这些不是内置的,您可能会建议新名称,因为这些名称非常糟糕。事实上,这是我希望它们是内置的主要原因。