мне нужно двоичные комбинаторов типаЭти два комбинатора уже доступны в Haskell?
(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 поворачивает вверх ничего, но иногда его поиск не обобщать должным образом. Любая идея, если они встроены? Могут ли они быть построены из частей существующей библиотеки?
Если они не встроены, вы можете предлагать новые имена, потому что эти имена довольно плохи. На самом деле, это главная причина, я надеюсь, что они являются встроенный.
'or :: (a -> c) -> (b -> c) -> Либо b -> c' уже находится в' Prelude'; выбрать другое имя? – ephemient
Я знаю, поэтому я надеялся, что кто-то может предложить хорошие альтернативы. –