次の2つの関数を書きました:
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)
これらは、次のような 2 つのブール関数の値を結合するために使用できます。
import Text.ParserCombinators.Parsec
import Data.Char
nameChar = satisfy (isLetter `f_or` isDigit)
この 2 つの機能を見て、非常に便利であることがわかりました。そのため、標準ライブラリに含まれているか、既存の関数を使用してこれを行うためのクリーンな方法がある可能性が高いと思われます。
これを行う「正しい」方法は何でしたか?