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

Haskell编程问题:计算列表总和后判断其是否可被指定数值整除

代码修正方案

现有代码的问题

  • / 是Haskell的浮点数除法运算符,运算结果为浮点类型,无法直接作为if的判断条件(Haskell要求if的条件必须是Bool类型,不会做数值到布尔的隐式转换),编译阶段就会报错
  • 硬编码除数为5,不符合「可指定整除数值」的需求
  • if 条件 then True else False的写法冗余,直接返回条件本身的布尔值即可
  • 整除判断逻辑错误,你需要的是判断总和除以指定数的余数是否为0,而非做除法运算

正确实现代码

-- 可选显式写类型签名,也可以省略让Haskell自动推导
addDivide :: Integral a => a -> [a] -> Bool
addDivide divisor list = sum list `mod` divisor == 0

如果需要处理除数为0的异常场景,可以加边界判断:

addDivide :: Integral a => a -> [a] -> Bool
addDivide divisor list
  | divisor == 0 = error "除数不能为0"
  | otherwise = sum list `mod` divisor == 0

测试示例

你给出的用例addDivide 5 [5,5],计算过程为sum [5,5] = 10,10 mod 5 = 0,最终返回True,符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 12:39:03