mobile wallpaper 1
mobile wallpaper 2
mobile wallpaper 3
mobile wallpaper 4
2990 字
8 分钟
范畴论,一种结构主义视角
2026-08-30
4

范畴论(category theory)诞生于 1945 年,数学家艾伦伯格(Samuel Eilenberg)和麦克莱恩(Saunders Mac Lane)为了统一代数拓扑里的各种构造发明了它。后来它长成了数学的通用语言,也渗进了物理和计算机科学。但它首先提供的不是工具,而是一种看待事物的视角:结构主义。一个东西是什么,不由它的内部构成决定,而由它与其他东西的关系决定。

1. 范畴:只有箭头,没有内部#

范畴由两部分组成:一些对象(object),和一些对象之间的态射(morphism,箭头)。再加三条规则:箭头可以复合,A 到 B、B 到 C 的两个箭头可以拼成 A 到 C 的一个箭头;复合满足结合律,先结合哪一段不影响结果;每个对象有一个恒等箭头,与任何箭头复合都不改变对方,相当于什么也不做。就这些,定义完毕。

范畴不关心对象“是什么”。集合与函数构成一个范畴,群与群同态构成一个范畴,偏序集与“≤”也构成一个范畴。对象可以是任何东西,范畴论只问箭头怎么连、怎么复合。

于是“相等”这个概念也变了。范畴论几乎从不问两个对象是不是同一个,它问的是“同构”:是否存在一对方向相反的箭头,使得复合之后两边都回到恒等箭头。同构的对象在结构上无法区分,范畴论就把它们当作同一个东西。

2. 结构主义:对象是位置,不是内核#

结构主义的立场可以概括成一句:对象没有内部本质,只有关系中的位置。

数“2”是什么?按结构主义,它不是一个有内在本质的实体,而是它在自然数结构中的位置:在 1 的后面,在 3 的前面,满足 1+1=2。换一批实现,用集合、用石子、用电路,只要关系网一模一样,数学内容就一模一样。戴德金以来的这一脉数学家认为,算术研究的从来不是某些特定的对象,而是这套关系结构本身。

范畴论把这个立场做成了严格的数学:一个对象的全部性质,就是它与其他对象之间的全部箭头。米田引理(Yoneda lemma)给出了精确形式:一个对象由它与其他对象之间的全部态射,在同构的意义下完全确定。通俗地说:告诉我你与一切的关系,我就知道你是谁。

3. 三种基础:集合论、范畴论、类型论#

数学给自己找过几种地基,集合论、范畴论、类型论是其中影响最大的三种,它们对“存在”的理解各不相同。

集合论的原始关系是“属于”。万物皆集合,数是集合,函数也是集合,一个东西的性质由它的元素决定。这是一种从内往外的建造:先有元素,再有整体。它的哲学底色通常是柏拉图主义:数学对象独立存在,等待被发现,排中律可以自由使用,证明可以不给出任何构造。

范畴论把方向反了过来。原始关系不是“属于”,而是箭头和复合;对象没有元素、没有内部,一切性质都从它与别的对象的关系里读出来。这是从外往里的建造:先有关系网,位置才成为对象。

类型论走第三条路,也更接近构造主义。在类型论里,每个对象都带着自己的类型,命题即类型,证明即程序:一个存在命题成立,意味着你能真的给出那个构造,而不是靠反证法说明“没有它会矛盾”。柯里-霍华德对应把证明和程序等同起来。同伦类型论(HoTT)更进一步,把“相等”做成路径,用同伦论重写了整个地基。

三种基础不互相取代。它们是三套语言,也在相互翻译:范畴论可以建立在集合论上,同伦类型论的语义模型则要用到高维范畴。选择哪一套,取决于你想把“存在”理解为被发现的对象、被构造的程序,还是关系网中的位置。

4. 泛性质:用关系定义对象#

看看范畴论怎么定义乘积。经典数学说,乘积由有序对组成。范畴论不这么说。它说:A 与 B 的乘积是一个对象 X,带着两个投影箭头分别指向 A 和 B,使得任何其他对象 Y,只要它有到 A 和到 B 的箭头,就唯一地经由 X 分解。换句话说,X 不是由内容定义的,而是由“所有其他对象通往它的方式”定义的。

这种定义方式叫泛性质(universal property)。同一个泛性质,在集合范畴里给出笛卡尔积,在群范畴里给出直积,在类型论里给出积类型。定义只说关系,实现随范畴而变。

把单个乘积推广到一张图上,就得到极限(limit):它是“最一般的满足方式”,余极限(colimit)是它的对偶。并、交、粘合、商这些散落在各领域的构造,在范畴论里成了同一条原理的反复实例。

5. 函子与伴随:自由与遗忘成对出现#

函子(functor)是范畴之间的映射:把对象映到对象、箭头映到箭头,并且保持复合与恒等。一句话,保结构的翻译。数学各分支之间打交道,几乎都经过函子。箭头之间还有箭头,称为自然变换(natural transformation),它负责比较不同的函子。

最经典的例子是遗忘与自由这一对。从群的范畴到集合的范畴有一个遗忘函子 U:给它一个群,抹掉运算,只留下一堆元素。反过来,从集合的范畴到群的范畴有一个自由群函子 F:给它一堆自由的字母,按最经济的规则生成一个群。这两个函子方向相反,却有严格的对应:从自由群 FX 出发到任意群 A 的群同态,和从集合 X 出发到集合 UA 的普通函数,一一对应。

这样一对互逆相扣的函子称为伴随函子,F 左伴随于 U。伴随在数学里几乎无处不在:量词“存在”与“全称”、自由构造与遗忘,都是伴随。它的直觉是,一对概念互为对方的最优解:一个给足自由,一个负责约束。

6. 单子:封装之后,内部不可见#

单子(monad)是伴随的产物:一对伴随函子复合起来,就得到一个单子。它也可以更直接地理解:一个把对象送回自己所在范畴的构造 T,配上两个操作,一个把普通对象装进 T,一个把装了两层的东西压回一层。

用例在编程里随处可见。Haskell 里,Maybe 单子封装“可能失败的计算”,列表单子封装“多结果的计算”,IO 单子封装与外部世界的副作用。使用一个单子不需要打开封装看内部,只需要面对它的接口:装进去什么,会出来什么。

这就是单子关键的性质:封装之后,内部逻辑绝对不可见。一个大的态射可以拆解为无数子态射的嵌套,但只要封装起来,外界能看到的就只有当前的输入和输出,也就是 I/O。想理解它,不必拆开它。

这件事也回答了明希豪森三重困境的一部分:追问内部确实会无穷倒退,但封装让追问停在接口上,接口已经给出了一切可问的内容。

7. 米田引理:一切皆态射#

结构主义的数学核心是米田引理。它的形式并不复杂:在米田嵌入下,任意对象 X 被映到 Hom(-, X),即所有其他对象指向它的态射,连同它们的复合关系。这个嵌入是全忠实的,所以 X 由它的全部关系,在同构的意义下唯一确定。

这个引理简洁到极致,它的哲学读法是四个字:一切皆态射。

对象没有内核,它的本质是空的;所谓对象,是态射交织嵌套的网络中,局部视角下的一个假象。盯着它,看到的是一个“东西”;退后一步,看到的是一束关系。大态射拆开是无数子态射的嵌套,封装起来又是一个新的态射,内部对外不可见,只剩 I/O。关系即是实体。

传统还原论解释不了复杂系统的涌现,因为还原要求拆到最小单元,而涌现恰恰发生在拆不动的层级上。范畴论的视角给出另一种答案:涌现就是态射足够多、嵌套足够深时,在局部视角下呈现为一个对象的东西。细胞对分子来说是涌现,心智对神经元来说是涌现,都可以这样读。宇宙本身,也可以说是态射交织嵌套中的涌现。

8. 一种组织思想的语言#

范畴论看起来抽象,归根结底它是一种语言,一种用来组织思想的工具,和别的语言一样需要学词汇、学语法。

它的词汇是对象、态射、函子、自然变换、极限、伴随、单子;它的语法是复合与泛性质。它的目标之一,是把非正式的语言精确化:把“这两个东西差不多是一回事”“这个构造可以搬到那个领域”这类含糊的说法,变成箭头图上的精确关系。用图形组织概念,用符号组织复杂事实。

词汇的价值在使用时才显出来:对某个现象缺乏词汇,就很难向别人解释发生了什么;掌握了术语,解释就容易很多。范畴论就是这样一套术语系统,用来组织自己的思维,以及数学乃至更广阔领域的思想。

分享

如果这篇文章对你有帮助,欢迎分享给更多人!

范畴论,一种结构主义视角
https://blog.lavandis.org/posts/category-theory/
作者
Lavandis
发布于
2026-08-30
许可协议
CC BY-NC-SA 4.0

部分信息可能已经过时

目录