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

如何在Haskell中使用自定义ConcatListsOnFunc实现myMap函数

实现说明

首先你提供的ConcatListsOnFunc存在两处笔误,修正后可正常运行:

ConcatListsOnFunc :: (a -> [b]) -> [a] -> [b]
ConcatListsOnFunc func []     = [] -- 原第二行函数名多写了后缀f
ConcatListsOnFunc func (y:ys) = func y ++ ConcatListsOnFunc func ys -- 原递归调用的flattenMap就是本函数的别名

这个函数的逻辑和Haskell标准库中的concatMap完全一致,完全可以用来实现你需要的myMap。

具体实现

你只需要通过lambda表达式,把myMap入参的单值返回函数,包装成返回单元素列表的函数,传入ConcatListsOnFunc即可:

myMap :: (a -> b) -> [a] -> [b]
myMap f = ConcatListsOnFunc (\x -> [f x])

效果验证

调用myMap (+1) [1,2,3]时,执行逻辑如下:

  • 每个元素依次传入lambda,得到[2]、[3]、[4]三个单元素列表
  • ConcatListsOnFunc将三个列表拼接,最终输出[2,3,4],完全符合要求。

内容的提问来源于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.28 15:39:01