为什么Haskell的发现总是只返回一个元素?

时间:2016-04-06 02:11:21

标签: haskell

Prelude> find odd [2,4,7,9,11]
Just 7

我希望这会返回[7,9,11],因为它们都是奇数。为什么find会返回Just 7

有什么方法可以告诉odd函数返回我期望的内容吗?

3 个答案:

答案 0 :(得分:6)

来自documentation

  

find函数接受谓词和列表,并返回匹配谓词的列表中的第一个元素,如果没有这样的元素,则返回Nothing

改为使用filter

> filter odd [2,4,7,9,11]
[7, 9, 11]

答案 1 :(得分:4)

使用filter

> filter odd [2,4,7,9,11]
[7, 9, 11]

答案 2 :(得分:4)

您正在寻找filter,而不是findfind的工作是找到第一个,或者让你知道没有一个。 filter的工作是列出所有这些。