Prelude> find odd [2,4,7,9,11]
Just 7
我預計這會返回[7,9,11],因爲它們都是奇數。爲什麼find
返回Just 7
?爲什麼Haskell的查找總是隻返回一個元素?
有沒有什麼辦法可以告訴odd
函數返回我所期望的?
Prelude> find odd [2,4,7,9,11]
Just 7
我預計這會返回[7,9,11],因爲它們都是奇數。爲什麼find
返回Just 7
?爲什麼Haskell的查找總是隻返回一個元素?
有沒有什麼辦法可以告訴odd
函數返回我所期望的?
使用filter
> filter odd [2,4,7,9,11]
[7, 9, 11]
您正在尋找filter
,不find
。 find
的工作是找到第一個,或讓你知道沒有一個。 filter
的工作是列出他們所有的人。
的
find
函數採用一個謂語和列表,並返回第一元件在列表中的謂詞,或者Nothing
匹配,如果不存在這樣的元件。
使用filter
代替:
> filter odd [2,4,7,9,11]
[7, 9, 11]
在這種情況下,你應該找出函數類型您的需求,然後問[hoogle(https://www.haskell.org/hoogle)。對於這個任務搜索參數是**(a - > Bool) - > [a] - > [a] **。 – ArthurVard