单子K和单子关系

4
我正在尝试理解著名的短语“一个单子就是一个函子范畴中的幺半群”,并将一些范畴论概念映射到“cats”库中。在“cats”中有一个“MonoidK”类型类,它在“combineK”方法上是多态的。因此,如果我们用函子参数化它,那么这个类型类的一个实例看起来像是一个函子范畴中的幺半群。
如果我们假设只能通过函子对“MonoidK”进行参数化,那么从范畴论的角度来看,“MonoidK”和“Monad”之间的区别是什么?
1个回答

4

在代数学中,monoid有两个概念: monoidmonoid。后者是前者更抽象的版本。前者可以被视为后者非常特定的部分情况。我们将它们称为monoid (1)和monoid (2)。

MonoidK是higher-kinded F[_]的monoid (1)。您知道如何“乘”两个类型为F[A]的元素和类型为F[A]的“单位”。

Monad是functors的monoid (2)。您知道如何将F[F[A]]“压扁(flatten)”成F[A],以及如何将A“打包(pack)”到F[A]中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接