"monadic structure" 和 "element of a structure" 在任意 Monad 的上下文中准确意味着什么?
What does a "monadic structure" and "element of a structure" precisely mean in the context of arbitrary Monad?
通读 Control.Monad 的文档,我发现了 mapM 的描述:
Map each element of a structure to a monadic action, evaluate these actions from left to right, and collect the results
我很感兴趣,“结构元素”对于任意 monad 意味着什么?例如,State
或 IO
monad?什么结构?
我知道 mapM
函数的作用,并且在 mapM
的描述中这个特定单词的 语义 中更有趣。这个“结构”是否与“代数结构”的概念有某种联系?
Structure is a set with one or more finitary operations defined on it that satisfies a list of axioms.
如果是这样,那么我要求的这个结构(载体组)的元素是什么,例如IO单子?一般来说?
这里的'structure'是Traversable
class的实例(即mapM
签名中的类型构造函数t
)。
"Element of a structure" 对于任意 monad 完全没有任何意义,因为它不引用 monad。您所指的 mapM
是 Traversable
类型类的成员,它所指的结构是 Traversable
。 Traversable
是一种可以映射的数据结构,例如列表或树。 "Element of a structure" 引用列表的元素。
通读 Control.Monad 的文档,我发现了 mapM 的描述:
Map each element of a structure to a monadic action, evaluate these actions from left to right, and collect the results
我很感兴趣,“结构元素”对于任意 monad 意味着什么?例如,State
或 IO
monad?什么结构?
我知道 mapM
函数的作用,并且在 mapM
的描述中这个特定单词的 语义 中更有趣。这个“结构”是否与“代数结构”的概念有某种联系?
Structure is a set with one or more finitary operations defined on it that satisfies a list of axioms.
如果是这样,那么我要求的这个结构(载体组)的元素是什么,例如IO单子?一般来说?
这里的'structure'是Traversable
class的实例(即mapM
签名中的类型构造函数t
)。
"Element of a structure" 对于任意 monad 完全没有任何意义,因为它不引用 monad。您所指的 mapM
是 Traversable
类型类的成员,它所指的结构是 Traversable
。 Traversable
是一种可以映射的数据结构,例如列表或树。 "Element of a structure" 引用列表的元素。