[英]Returning number of occurences with condition from list in Haskell
我想從列表中過濾數字,條件是它們必須小於 3,然后在起始列表中有多少這樣的元素
filterLove :: (Num a, Ord a) => [a] -> Int
filterLove [42, 66, 15, 2] ~>* 1
我試過這個filterLove filter (< 3) a = length a
但它不起作用。 我不知道我該怎么做。 感謝幫助。
filterLove
是一個映射項目列表的函數,這意味着您可以將其定義為:
filterLove :: (Num a, Ord a) => [a] -> Int
filterLove xs = …
其中xs
是數字列表,而…
部分是一個類型應該為Int
的表達式。
因此,我們使用filter (<3) xs
創建一個僅包含小於 3 的xs
元素的新列表,其中filter :: (a -> Bool) -> [a] -> [a]
接受一個謂詞和一個列表並生成一個包含滿足謂詞的所有元素的列表。 然后我們可以使用length (filter (<3) xs)
確定該列表的長度,其中length :: [a] -> Int
將確定列表的長度:
filterLove :: (Num a, Ord a) => [a] -> Int
filterLove xs = length (filter (<3) xs)
我們可以通過η-reduction刪除參數xs
為:
filterLove :: (Num a, Ord a) => [a] -> Int
filterLove = length . filter (<3)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.