MonoidK和Monad关系

时间:2019-04-19 04:20:10

标签: scala scala-cats category-theory

我试图理解众所周知的短语A monad is just a monoid in the category of endofunctors,并将一些类别理论概念映射到cats库中。

MonoidK中有一个cats类型类,它在combineK方法上是多态的。因此,如果我们用函子参数化,则此类型类的一个实例看起来像是类内吸虫类中的类人动物。

如果我们假设只能通过函子对MonoidK进行参数化,那么在类别理​​论上MonadMonoidK之间有什么区别?

1 个答案:

答案 0 :(得分:4)

有二元组的两个概念:代数中的monoid和范畴论中的monoid。后者是前者的抽象版本。前者可以被视为后者的非常具体的部分情况。我们称它们为monoid(1)和monoid(2)。

MonoidK对于种类较高的F[_]是等号(1)。您知道如何将F[A]类型的两个元素和F[A]类型的“单位”“相乘”。

Monad是仿函数(2)的函子。您知道如何将F[F[A]]压缩为F[A],以及如何将A压缩为F[A]