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

Haskell中如何为递归自定义类型Page实现提取全部Title的递归函数

解决方案

你当前的实现仅提取了当前层级的Title名称,没有递归处理content字段中嵌套的子Page元素,修改后的代码如下:

menu :: Page -> [String]
menu (Text _) = []
menu (Title name content) = name : concatMap menu content

代码说明

  • Text类型节点本身不包含标题,直接返回空列表即可,将未使用的参数改为下划线是Haskell的常规写法,保留原参数名也可正常运行。
  • Title类型节点的处理逻辑:
    • 首先将当前节点的标题name加入结果列表
    • 使用concatMap遍历content列表中的每一个Page元素,对每个元素递归调用menu函数获取其下的所有标题,再将所有子结果拼接后合并到当前结果中

运行效果

修改后执行menu index即可得到所有嵌套的Title组成的列表:

["Home","Welcome!","Lorem","dolor","no title","Look!","Finish"]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 23:36:03