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

Haskell中如何统计自定义数据类型内列表的元素数量

解决Haskell自定义数据类型的列表元素统计问题

嘿,这问题挺直接的,我来一步步给你讲清楚怎么实现~

首先先看你定义的自定义数据类型:

data b = b Int Int Int [b] deriving (Eq)

这里要提个小建议:虽然Haskell允许类型变量和构造函数同名(都是b),但实际写代码的时候建议把类型和构造函数改成首字母大写的名字(比如MyData),这样可读性会高很多,避免混淆。不过先按你给出的定义来实现函数。

我们需要实现的kk函数,核心就是取出数据类型里的列表字段,然后计算它的长度。用Haskell的模式匹配就能轻松搞定:

kk :: b -> Int
kk (b _ _ _ xs) = length xs

代码解释:

  • kk (b _ _ _ xs):这里用模式匹配把构造函数b的四个参数拆解开,前三个Int类型的参数我们不需要用到,所以用_来忽略;最后一个xs就是我们要统计的[b]列表。
  • length xs:调用Haskell内置的length函数,直接返回列表的元素数量。

比如你给出的示例:

a = b 3 4 5 [b1, b2, b3]  -- 这里假设b1、b2、b3都是b类型的实例

调用kk a就会返回length [b1, b2, b3],也就是3,完全符合你的要求。

如果改成更清晰的命名方式,代码会变成这样:

data MyData = MyData Int Int Int [MyData] deriving (Eq)

kk :: MyData -> Int
kk (MyData _ _ _ xs) = length xs

这样别人看代码的时候一眼就能明白各个部分的含义啦~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:25:44