什么是" monadic结构"和"结构元素"在任意Monad的背景下精确地意味着什么?

时间:2016-02-25 15:41:08

标签: haskell monads algebra category-theory io-monad

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

  

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

我很感兴趣,“结构元素”对于任意单子意味着什么?例如,StateIO monad?什么结构? 我知道mapM函数在mapM的描述中对这些特定单词的语义中的函数做了什么以及更有趣。这是"结构"以某种方式与代数结构的概念相关联#34;?

  

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

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

2 个答案:

答案 0 :(得分:8)

"结构元素"对任意monad来说都没有任何意义,因为它没有引用monad。您引用的mapMTraversable类型类的成员,它引用的结构是TraversableTraversable是可以映射的数据结构,例如列表或树。 "结构元素"是指列表的元素。

答案 1 :(得分:4)

这里的'结构'是Traversable类的实例(即t签名中的类型构造函数mapM