如何在Haskell中重新实现"all"函数?
How to reimplement the "all" function in Haskell?
我需要定义一个函数all' :: ( a -> Bool ) -> [a] -> Bool
来验证列表中的所有元素是否都满足特定条件。
例如:all' ( <5) [1,2,3] = True
,all' (>=2) [1,1,2,2,3,3]
= 假。
我的主要问题是我不知道如何处理函数的传递。
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
现在尝试将其扩展到列表。
我需要定义一个函数all' :: ( a -> Bool ) -> [a] -> Bool
来验证列表中的所有元素是否都满足特定条件。
例如:all' ( <5) [1,2,3] = True
,all' (>=2) [1,1,2,2,3,3]
= 假。
我的主要问题是我不知道如何处理函数的传递。
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
现在尝试将其扩展到列表。