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

Haskell:如何在元组列表中输出数值最大的元组

从元组列表中找出数值最大的元组

针对你的需求,我们可以用Haskell标准库中的maximumBy函数(来自Data.List模块)实现,它允许自定义元素的比较规则。

完整代码示例

import Data.List (maximumBy)
import Data.Ord (comparing)

testData = [("Jack", "Hill", 2), ("Susan", "Smith", 5), ("Steve", "Johnson", 6)]

-- 基于元组第三个元素找出最大元组
maxTuple :: [(String, String, Int)] -> (String, String, Int)
maxTuple = maximumBy (comparing (\(_, _, num) -> num))

-- 测试调用
main = print $ maxTuple testData

代码说明

  • maximumBy:接收一个比较函数和列表,返回列表中符合比较规则的"最大"元素,需要从Data.List导入。
  • comparing:是个便捷工具函数,它接收一个提取关键值的函数(比如这里提取元组第三个元素的\(_, _, num) -> num),返回可用于比较的函数,简化代码编写。
  • 不想用comparing的话,也可以手动写比较逻辑,效果完全一致:
    maxTuple = maximumBy (\a b -> compare (third a) (third b))
      where third (_, _, num) = num
    

运行代码后会输出期望结果:

("Steve", "Johnson", 6)

额外提示

如果你的列表可能为空,maximumBy会抛出异常,这种场景可以用Maybe类型做安全处理:

maxTupleSafe :: [(String, String, Int)] -> Maybe (String, String, Int)
maxTupleSafe [] = Nothing
maxTupleSafe xs = Just $ maximumBy (comparing (\(_, _, num) -> num)) xs

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 17:57:18