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

如何检查列表所有元素等于指定值?Haskell函数实现求助

问题解决:检查列表所有元素是否为"car"

你的代码逻辑存在错误:当列表第一个元素是"car"且后面还有元素时,你直接返回了False,完全没有递归检查剩余元素是否符合要求。比如调用go ["car","car","car"]时,会匹配go ("car":xs)分支直接返回False,这和预期结果相反。

正确的递归实现

go :: [String] -> Bool
go [] = True  -- 空列表默认满足条件(全称命题空真)
go ("car":xs) = go xs  -- 第一个元素是"car",递归检查剩余列表
go _ = False  -- 第一个元素不是"car",直接返回False

更简洁的内置函数实现

Haskell提供了all函数可以直接完成这类全量检查,一行代码就能实现需求:

go :: [String] -> Bool
go = all (== "car")

测试验证

  • 调用go ["car","car","car"]返回True
  • 调用go ["car","car","bus"]返回False

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 00:36:27