Advertisement

基于函数式的Monads研究——Monoids

阅读量:

Monads是什么

知乎上围绕"什么是Monad"这一话题展开讨论,并在维基百科页面上也有对"Monad"的详细解释。对于初次接触"Monad"这一概念的读者来说,在刚开始学习时可能会感到晕头转向并产生些许畏惧心理(因为 Monad 与数学中的范畴论有着密切的关系)。不过尽管如此,在函数式编程领域中 Monad 的应用场景极为广泛且重要,并且在 Scala 语言的标准库中常见地使用到了 Monad 这一概念。这也促使我们不得不深入研究这一概念的本质与应用。

Monoids

Monoids是由一系列遵循特定规则的元素构成的集合体。这些代数结构必须满足结合律以及具有一个单位元(Identity element),这个单位元在与任何其他元素结合时都不会改变其他元素的结果。例如:考虑整数集合Z上的加法运算+。这里Z是一个Monoid;其单位元为0,并且对于任意整数a∈Z,都有a + 0 = a成立。

  • integer Int类中0为Identity元素
  • 所有整数均遵循结合律
  • list List类中任意两个list可通过连接操作来组合
  • 空列表NIL或空列表[]被视为Identity元素
  • string String类中任意两个string可通过拼接操作来合成
  • 空字符串""被视为Identity元素

全部评论 (0)

还没有任何评论哟~