所以我有一个我想根据规则集过滤的项目(食谱)列表,
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' 将一个函数应用于列表.. 并且 zipWith 将一个数组乘以一个数组.. 必须有另一个函数来执行此任务!
我也一直在想,也许我可以将规则集作为参数传递给 testRules 并递归地遍历规则集:
testRules (rule:rules) r = rule r && testRules rules
testRules [] r = True
但是,我不知道如何提供函数的头部(testRules :: )
为任何帮助干杯!