2016-04-06 176 views
0
Prelude> find odd [2,4,7,9,11] 
Just 7 

我预计这会返回[7,9,11],因为它们都是奇数。为什么find返回Just 7为什么Haskell的查找总是只返回一个元素?

有没有什么办法可以告诉odd函数返回我所期望的?

+2

在这种情况下,你应该找出函数类型您的需求,然后问[hoogle(https://www.haskell.org/hoogle)。对于这个任务搜索参数是**(a - > Bool) - > [a] - > [a] **。 – ArthurVard

回答

3

使用filter

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

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

6

documentation

find函数采用一个谓语和列表,并返回第一元件在列表中的谓词,或者Nothing匹配,如果不存在这样的元件。

使用filter代替:

> filter odd [2,4,7,9,11] 
[7, 9, 11] 
相关问题