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

Haskell实现populationBelow函数解决小数适配与非穷尽模式报错问题

函数修正方案

问题根因

  • 类型适配问题:原函数签名限制了输入阈值、人口数值都为Int整型,无法匹配示例中的浮点型人口数据,需要调整类型为支持小数的Double类型(也可添加Ord a约束实现任意可比较数值类型的通用适配)。
  • 非穷尽模式报错:原递归逻辑缺少空列表的终止匹配分支,递归到列表末尾时无对应处理逻辑;同时otherwise分支逻辑错误,会把不符合筛选条件的国家也加入结果列表。

修正后代码

-- 函数签名调整为支持浮点型数值
populationBelow :: Double -> [(String, Double)] -> [String]
-- 新增空列表终止条件,解决非穷尽模式报错
populationBelow _ [] = []
populationBelow x ((name, pop):rest)
  | pop < x = name : populationBelow x rest
  -- 不符合条件的国家不加入结果,直接递归处理剩余元素
  | otherwise = populationBelow x rest

效果验证

运行题目给出的两个测试用例,可得到预期返回结果:

  1. 阈值为10时返回["Hungary", "Iceland", "Mongolia"]
  2. 阈值为0时返回[]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 12:27:04