You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Haskell中如何统计列表内满足小于3条件的元素个数

问题排查

你的代码存在两个核心问题:

  1. 语法错误:你写的filterLove filter (< 3) a = length a把filter、(<3)都当成了filterLove的入参,而不是调用filter函数处理列表的逻辑。
  2. 逻辑错误:你直接计算原列表a的长度,没有对筛选后的结果计数。

正确实现

写法1:显式传参(易理解)

filterLove :: (Num a, Ord a) => [a] -> Int
filterLove a = length (filter (< 3) a)

写法2:函数组合(更简洁)

filterLove :: (Num a, Ord a) => [a] -> Int
filterLove = length . filter (< 3)

逻辑说明

  • 先用filter (<3) 原列表筛选出所有小于3的元素,得到符合条件的新列表
  • 再用length计算新列表的长度,就是符合条件的元素总数量
  • 示例输入[42, 66, 15, 2]筛选后得到[2],长度为1,和要求的输出一致。

内容的提问来源于stack exchange,提问作者user11574067

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 17:27:03