我知道這個filter功能,但我想知道如何過濾掉。例如:filter odd [1,2,3] = [1,3],但我想要filter (not(odd)) [1,2,3] = [2](是的,我知道有一個偶數函式,但這只是它的一個例子)。我不知道是否有一個我不知道的單獨函式,或者是否有一些我可以添加到引數中的東西。謝謝。注意:我不能使用 GHC.Utils.Misc filterOut。
uj5u.com熱心網友回復:
你非常接近,你可以使用:
filter (not . odd) [1, 2, 3]
在這里,我們因此構造了一個函式\x -> not (odd x),它將因此保留所有不奇數的元素,所以偶數。
uj5u.com熱心網友回復:
也可以使用partition來自 的函式Data.List。
Prelude> import Data.List
Prelude Data.List> lst = [1,2,3,4,5,6,7,8]
Prelude Data.List> (odds, evens) = partition odd lst
Prelude Data.List> odds
[1,3,5,7]
Prelude Data.List> evens
[2,4,6,8]
另一種選擇是使用串列推導代替filter.
Prelude Data.List> [x | x <- lst, not $ odd x]
[2,4,6,8]
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/427265.html
