如何在Haskell中重新实现“all”功能?

时间:2016-04-25 10:46:34

标签: haskell haskell-platform

我需要定义一个函数all' :: ( a -> Bool ) -> [a] -> Bool,它验证列表中的所有元素是否满足某个条件。

例如:all' ( <5) [1,2,3] = Trueall' (>=2) [1,1,2,2,3,3] = False。

我的主要问题是我不知道如何处理函数的传输。

1 个答案:

答案 0 :(得分:5)

Haskell中的函数与任何其他值一样被传递。这是帮助您取得进步的一个例子:

doBothSatisfy :: (a -> Bool) -> a -> a -> Bool
doBothSatisfy p x y = (p x) && (p y)

现在用法:

doBothSatisfy (> 5) 6 7 == True
doBothSatisfy (> 5) 1 8 == False

现在尝试将其扩展到列表。