2016-04-06 174 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] 
相關問題