ルールセットに基づいてフィルタリングしたい項目 (レシピ) のリストがあります。
ruleset = [rule0, rule1, rule2, rule3, rule4]
ここで、各ルールは関数 :: Recipe -> Bool です。これらのルールをリスト内の各項目に適用したいので、次の関数を使用してこれを行っています。
testRules :: Recipe -> Bool
testRules r = rule0 r && rule1 r && rule2 r && rule3 r && rule4 r
「rule0 && rule1&& ...」と明示的に言わずに配列を適用する方法が必要です。
誰も方法を知っていますか?'map' は 1 つの関数をリストに適用することを知っています..そして zipWith は配列を配列で乗算します..このタスクを実行するには別の関数が必要です!
また、ルールセットをパラメーターとして testRules に渡し、一連のルールを再帰的に処理できるのではないかと考えています。
testRules (rule:rules) r = rule r && testRules rules
testRules [] r = True
ただし、関数の先頭 (testRules :: ) を提供する方法がわかりません。
どんな助けにも乾杯!