美文网首页iOS开发之常用技术点
理解范畴论中单子需要的最小知识集

理解范畴论中单子需要的最小知识集

作者: 贺刚 | 来源:发表于2017-03-01 21:34 被阅读559次

A monad is just a monoid in the category of endofunctors, what's the problem?

作为一个计算机工作者,这句话对你造成过多少点的装逼伤害?是时候弄明白这句话的意思了。

搞清楚Monad需要了解的概念

1. Category: 

注意:

1. Category与集合不同,不只包括元素(objects),还包括了元素之上的态射(morphisms),态射的二元运算∘还需满足结合律(associativity),并且对identity的存在性有要求。

2. 给定Category C,C的元素ob(C)是一个类(class),类是比集合(set)大的一个概念,两者区别可以从罗素悖论(Russell paradox)进一步了解。如果不想分散注意力,暂时可以认为该类就是一个集合。

3. 二元运算是态射的运算,不是元素的

2. Functor

Functor是个范畴与范畴之间的映射(mapping)。可以看作是范畴间的同态(homomorphism),其特点是保留结构(structure-preserving)的,所谓结构保留体现在不只映射元素,同时映射态射。如下图所示:

根据范畴的定义,很自然的可以得出:

3. Endofunctor

A functor that maps a category to itself.

endofunctor的概念很简单,但是,是不是endofunctor就是identity functor呢?并不是,如果那样想,就是给endofunctor额外的限制了。试着看下图

再来一图

4. Natural transformations

一句话解释,自然变换(Natural Transformation)就是对于属于Category C的任意X,F(X)到G(X)之间态射的集合。注意F(X)与G(X)都属于Category D。类比于codomain,自然变换在"co-category"上。

5. Monad

Monad简单说就是1+2,1个endofunctor+2个natural transformations。

η的含义比较简单,根据定义,1c是identity functor,显然是一个特殊的endofunctor。根据自然变换的定义1c->T不能理解。

μ的含义需要先理解T∘T的意思,即对范畴进行两次mapping,不难得出T∘T依然是endofunctor。

看个图:

看看什么是a monoid in the category of endofunctors

1. Monoid

2. The category of endofunctors

这个Category我们记作[C,C],简单说,就是所有C->C的endofunctors构成的范畴,这个范畴的元素是endofunctors,态射是自然变换。注意,[C,C]是一个monoidal category,这个在网上可以找到证明,此处不赘述。

So, A monad is a monoid in the category of endofunctors

到此时,很容易发现,什么是monad的两种描述,本质上描述的是相同的东西。就是一个1+2(1个endofunctors,加2个特殊的自然变换)

注意

wiki上还有定义说monoid是一个满足特殊条件的 Set,那到底monoid是Set还是Endofunctor呢?我在另外一篇文章做了解释。

相关文章

  • 理解范畴论中单子需要的最小知识集

    A monad is just a monoid in the category of endofunctors,...

  • 函子与单子--从范畴论到编程

    作为一名计算机工作者,理解范畴论中的函子与单子的目的,还是为了更好的理解函数式编程中的函子与单子,对于我来说,没有...

  • 王东岳的中西方哲学启蒙课第二十二天

    4.6 莱布尼茨的单子论和叔本华的意志论 莱布尼茨所说的无窗单子,就是精神的最小原子。 万物从感应、感性、知性、理...

  • 生存最小认知范畴

    昨天吃饭,说到一个问题,建筑中的中水处理是怎么运行的。在场的两位老爷们儿均表示不清楚,遂遭到一通鄙视。 为什么一定...

  • “可道之道”才是有意义的

    在实践意义世界,意识分三步走:感觉认知,理解判断,使用取效。感觉认知是认识论,理解与取效属于价值论的范畴,是有目的...

  • 《科学中的范畴论》学习笔记

    本系列是《Category Theory for the Sciences》一书的学习笔记。此书亚马逊有售:《Ca...

  • 习惯和范式

    范式 技能的纯熟需要时间来磨,从思索对策到凭本能而动,这种原理应用到学习上,就是环境熏染。从范畴论的角度来看,知识...

  • 一个Monad的不严谨介绍

    一个单子(Monad)说白了不过就是自函子范畴上的一个幺半群而已,这有什么难以理解的?* 之前了解了下Monad,...

  • ALS推荐算法

    简要描述: ALS是交替最小二乘(alternating least squares)的简称。在机器学习的范畴中,...

  • 如果没有慧心,努力就是装样子

    单纯积累知识、经验是不够的,还需要有慧心。 知识、经验是知的范畴。而慧心是心态、思想范畴。两方面的融合,才能组成智...

网友评论

    本文标题:理解范畴论中单子需要的最小知识集

    本文链接:https://www.haomeiwen.com/subject/aiyzwttx.html