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

如何判断Haskell列表所有元素均为大于10的奇数?现有代码为何不生效?

代码错误原因分析
  • 第一是返回类型不匹配:你声明的函数f的类型为[Int] -> Bool,要求最终返回布尔值,但函数体中列表推导式的输出是满足筛选条件的元素组成的[Int]类型列表,二者类型不符,代码无法通过编译。
  • 第二是逻辑不符合需求:你需要判断列表所有元素都满足大于10且为奇数,现有列表推导仅能筛选出符合条件的元素,无法直接得到「是否全部符合」的布尔结论。
正确实现参考

你可以直接使用Haskell内置的all函数实现「所有元素满足指定条件」的判断逻辑,示例如下:

f :: [Int] -> Bool
f xs = all (\x -> x > 10 && odd x) xs

如果希望基于列表推导的思路实现,也可以判断是否不存在不符合条件的元素:

f :: [Int] -> Bool
f xs = null [x | x <- xs, x <= 10 || even x]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 16:15:00