MonoidK和Monad的关系
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MonoidK和Monad的关系相关的知识,希望对你有一定的参考价值。
我试图理解众所周知的短语A monad is just a monoid in the category of endofunctors
并将一些类别理论概念映射到cats
库。
在MonoidK
中有一个cats
类型类,它在combineK
方法上具有多态性。因此,如果我们使用仿函数对它进行参数化,那么这个类型类的一个实例在endofuctors类中看起来像monoid。
如果我们假设我们只能通过仿函数参数化MonoidK
,那么Monad
和MonoidK
在类别理论方面有什么区别?
答案
幺半群有两个概念:代数中的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]
。
以上是关于MonoidK和Monad的关系的主要内容,如果未能解决你的问题,请参考以下文章