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

Haskell中如何判断列表与嵌套列表内子列表的长度是否不等

实现思路

你需要先拿到第一个输入列表的长度作为基准值,再逐个校验嵌套列表内每个子列表的长度是否和基准值一致:

  • 只要存在任意一个子列表长度和基准值不同,直接返回错误信息
  • 所有子列表校验通过则返回长度一致的信息

版本1:高阶函数简洁实现

直接用all高阶函数批量校验所有子列表,代码最简洁:

func :: [String] -> [[String]] -> String
func keys nestedList
  | all (\sub -> length sub == baseLen) nestedList = "Lengths are the same"
  | otherwise = "Error different lengths found"
  where baseLen = length keys

版本2:模式匹配递归实现(符合你要求的模式匹配写法)

通过手动递归+模式匹配逐个处理子列表,逻辑更直观:

func :: [String] -> [[String]] -> String
func keys nestedList = check baseLen nestedList
  where
    baseLen = length keys
    -- 模式匹配拆分嵌套列表
    check _ [] = "Lengths are the same" -- 所有子列表处理完毕,全部符合要求
    check len (curSub:restSubs)
      | length curSub /= len = "Error different lengths found" -- 遇到长度不匹配的子列表,直接返回错误
      | otherwise = check len restSubs -- 当前子列表符合要求,继续校验剩余子列表

示例验证

你给出的测试输入["Planet", "City"] [["Jupiter", "Earth"], ["Berlin", "Madrid", "Krakow"]],基准长度为2,第二个子列表长度为3,校验时会直接触发错误分支,返回结果和你预期完全一致。


内容的提问来源于stack exchange,提问作者program.exe

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 03:09:02