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

Haskell如何在元组列表第二个元素求和后追加固定整数?

解决方案

有两种简单的实现方式可以满足你的需求:

方法一:直接修改递归基准情况

把原函数的空列表返回值从0改为5,递归到最后时会自动把这个5加到总和里:

pizza :: [(String, Int)] -> Int
pizza [] = 5  -- 基准情况改为返回5
pizza ((_, b):xs) = b + pizza xs

测试输入pizza [("Cheese",10),("Dough",5)]时,计算过程为 10 + (5 + 5) = 20,符合预期。

方法二:拆分逻辑(更清晰)

保留原有的求和逻辑作为辅助函数,再封装一层添加5的逻辑,职责划分更明确:

-- 原求和函数,负责计算元组第二个元素的总和
sumSecond :: [(String, Int)] -> Int
sumSecond [] = 0
sumSecond ((_, b):xs) = b + sumSecond xs

-- 新的pizza函数,在求和结果基础上加5
pizza :: [(String, Int)] -> Int
pizza xs = sumSecond xs + 5

这种方式更易维护,后续如果需要调整求和逻辑或添加的数值,都可以单独修改对应部分。

另外,原代码里的((a),b)可以简化为(_,b),因为我们不需要用到元组的第一个String元素,用下划线_表示忽略该值更符合Haskell的编码习惯。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 06:35:29