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

技术问询:如何不使用elem函数判断整数n是否在整数列表中

Haskell代码修正:判断整数是否存在于列表

问题所在

你当前的代码通过列表推导式生成了所有与目标整数n相等的元素列表,返回类型是[Integer],但函数签名明确要求返回Bool类型,类型不匹配是导致错误的核心原因。

修正方案

方案1:基于现有逻辑快速调整

利用null函数判断匹配列表是否为空,再取反即可得到布尔结果(空列表表示无匹配,非空表示存在):

present:: Integer -> [Integer] -> Bool
present n llist = not $ null [x | x <- llist, x == n]

方案2:递归实现(函数式风格更地道)

手动遍历列表,逐个元素比较,符合Haskell的递归思维,也避免依赖额外的辅助函数:

present:: Integer -> [Integer] -> Bool
present _ [] = False          -- 空列表中不可能存在目标元素
present n (x:xs)
  | x == n    = True          -- 找到匹配元素,立即返回True
  | otherwise = present n xs  -- 未找到,继续遍历剩余列表

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 15:15:38