Haskell更复杂的谓词

时间:2013-06-21 17:45:42

标签: haskell

我正在学习Haskell,我想知道如何使谓词更复杂。

例如,我可以这样做:

 any ( >= 5 ) my_list

但我找不到办法如何做这样的事情:

 any (x `mod` 2  == 0) my_list

我怎么能这样做?

3 个答案:

答案 0 :(得分:5)

使用lambda函数:

any (\x -> x `mod` 2 == 0) my_list

答案 1 :(得分:5)

对于非常复杂的东西,你最好定义一个单独的功能。对于较小的情况,您可以使用lambda甚至是

之类的东西

    any predicate myList
            where predicate x = even x

编辑:即使x只是一个简化。您可以输入where predicate x = (mod x 3) == 1

之类的内容

答案 2 :(得分:3)

除了在@ m0nhawk的答案中使用匿名(lambda)函数之外,您还可以使用函数组合:

>>> any ( (==0) . (`mod` 2) ) [1,2,3]
True