MonoidK和Monad的关系

问题描述 投票:3回答:1

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

MonoidK中有一个cats类型类,它在combineK方法上具有多态性。因此,如果我们使用仿函数对它进行参数化,那么这个类型类的一个实例在endofuctors类中看起来像monoid。

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

scala scala-cats category-theory
1个回答
4
投票

幺半群有两个概念:代数中的monoid和类别理论中的monoid。后者是前者更抽象的版本。前者可以被认为是后者非常具体的部分情况。我们称它们为monoid(1)和monoid(2)。

MonoidK是高等级的F[_]的monoid(1)。你知道如何“加倍”F[A]类型的两个元素和F[A]类型的“单位”。

Monad对于仿函数是monoid(2)。你知道如何将F[F[A]]“扁平”成F[A]以及如何将A“包装”到F[A]

© www.soinside.com 2019 - 2024. All rights reserved.