簡體   English   中英

從 Haskell 中的列表返回有條件的出現次數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM