返回Haskell中包含条件的列表的出现次数



我想从列表中筛选number,条件是它们必须小于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
filterLovexs= …

其中xs为数字列表,部分为以Int为类型的表达式。

因此,我们创建了一个包含xs中小于3的元素的新列表,filter (<3) xsfilter :: (a -> Bool) -> [a] -> [a]接受一个谓词和一个列表,并生成一个包含满足该谓词的所有元素的列表。然后我们可以用length (filter (<3) xs)wherelength :: [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)

最新更新