Мне нужны бинарные комбинаторы типа
(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
Google ничего не обнаруживает, но иногда его поиск не обобщается должным образом. Есть идеи, если они встроены? Могут ли они быть построены из частей существующей библиотеки?
Если они не встроены, вы можете предложить новые имена, потому что эти имена довольно плохие. На самом деле это главная причина, по которой я надеюсь, что они являются встроенными.