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

Idris2中mapM与mapM_的等效函数是什么?

Idris2 0.6.0中mapM、mapM_及sequence的获取方式

首先,这些函数无需自行实现,它们存在于Idris2标准库的Control.Monad模块中,只需显式导入即可使用:

import Control.Monad

如果需要手动基于foldM实现,以下是直观的实现方式:

  • sequence:将单子值列表转换为包含列表的单子值
    sequence : Monad m => List (m a) -> m (List a)
    sequence = foldM (\acc, ma => ma >>= \a => pure (acc ++ [a])) []
    
  • mapM:先对列表元素映射单子函数,再执行sequence
    mapM : Monad m => (a -> m b) -> List a -> m (List b)
    mapM f = sequence . map f
    
  • mapM_:执行所有单子作用,忽略最终结果
    mapM_ : Monad m => (a -> m b) -> List a -> m ()
    mapM_ f = foldM (\(), ma => f ma >> pure ()) ()
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 14:17:40