1

通读Control.Monad 的文档,我发现了这样的mapM描述:

将结构的每个元素映射到一个单子动作,从左到右评估这些动作,并收集结果

我很感兴趣,“结构元素”对于任意 monad 意味着什么?例如,State还是IO单子?什么结构?我知道mapM函数的作用,并且mapM. 这个“结构”是否与“代数结构”的概念有某种联系?

结构是一个集合,上面定义了一个或多个满足公理列表的有限运算。

如果是这样,那么我要求的这个结构(载体集)的元素是什么,例如 IO monad?一般来说?

4

2 回答 2

8

“结构的元素”对于任意 monad 来说完全没有任何意义,因为它不引用 monad。mapM您指的是类型类的成员,它Traversable所指的结构是Traversable. ATraversable是可以映射的数据结构,例如列表或树。“结构的元素”是指列表的元素。

于 2016-02-25T15:50:01.877 回答
4

这里的“结构”是类的实例(即签名中Traversable的类型构造函数)。tmapM

于 2016-02-25T15:49:28.657 回答