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

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

如果我们假设只能通过函子对MonoidK进行参数化,则在类别理论方面MonadMonoidK有什么区别?

最佳答案

Monoid有两个概念:代数中的monoid和范畴论中的monoid。后者是前者的抽象版本。前者可以被视为后者的特定情况。我们称它们为monoid(1)和monoid(2)。

MonoidK是种类较高的F[_]的等分面(1)。您知道如何“相乘” F[A]类型的两个元素和F[A]类型的“ unit”。

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

10-05 20:10