Je viens d'écrire les deux fonctions suivantes :
fand :: (a -> Bool) -> (a -> Bool) -> a -> Bool
fand f1 f2 x = (f1 x) && (f2 x)
f_or :: (a -> Bool) -> (a -> Bool) -> a -> Bool
f_or f1 f2 x = (f1 x) || (f2 x)
Ils peuvent être utilisés pour combiner les valeurs de deux fonctions booléennes telles que :
import Text.ParserCombinators.Parsec
import Data.Char
nameChar = satisfy (isLetter `f_or` isDigit)
Après avoir examiné ces deux fonctions, je me suis rendu compte qu'elles sont très utiles, à tel point que je soupçonne maintenant qu'elles sont incluses dans la bibliothèque standard, ou plus probablement qu'il existe un moyen propre de faire cela en utilisant des fonctions existantes.
Quelle était la "bonne" façon de faire ?