通读Control.Monad 的文档,我发现了这样的mapM描述:
将结构的每个元素映射到一个单子动作,从左到右评估这些动作,并收集结果
我很感兴趣,“结构元素”对于任意 monad 意味着什么?例如,State
还是IO
单子?什么结构?我知道mapM
函数的作用,并且对mapM
. 这个“结构”是否与“代数结构”的概念有某种联系?
结构是一个集合,上面定义了一个或多个满足公理列表的有限运算。
如果是这样,那么我要求的这个结构(载体集)的元素是什么,例如 IO monad?一般来说?