You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

函子的定义是什么?函子是否属于函数范畴?

函子的定义,以及它和函数的区别

嘿,很高兴你能从二元关系的严谨角度理解函数——这种摆脱模糊术语的定义确实让人心里踏实!那咱们来聊聊函子,它其实是函数在范畴论这个更抽象层面上的“进阶版本”,但和普通函数又有着本质的不同。

先铺垫:范畴的基本概念

要理解函子,得先知道范畴是什么:简单来说,一个范畴包含两类核心东西:

  • 对象:可以是任何你能想到的“结构化集合”(比如集合、群、拓扑空间),甚至可以是更抽象的概念;
  • 态射:对象之间的“结构保持映射”(比如集合之间的函数、群之间的同态、拓扑空间之间的连续映射),而且态射有复合运算,还有每个对象对应的恒等态射(比如集合上的恒等函数)。

函子的严格定义

一个从范畴$\mathcal{C}$到范畴$\mathcal{D}$的函子$F$,需要满足两个核心部分,同时严格保持范畴的结构:

  1. 对象映射:对$\mathcal{C}$里的每一个对象$X$,指派$\mathcal{D}$里的一个对象$F(X)$——这一步看起来有点像普通函数对集合元素的指派,但这里的“元素”是范畴里的对象(比集合元素抽象得多)。
  2. 态射映射:对$\mathcal{C}$里的每一个态射$f: X \rightarrow Y$,指派$\mathcal{D}$里的一个态射$F(f): F(X) \rightarrow F(Y)$——这是函子和普通函数最关键的区别:它不仅映射“东西”,还要映射“东西之间的关系/映射”。

除此之外,函子必须遵守两个“结构保持”的规则:

  • 恒等态射保持:对$\mathcal{C}$里的任意对象$X$,$F(\text{id}X) = \text{id}{F(X)}$($\text{id}_X$是$X$上的恒等态射,函子把它映射成$F(X)$上的恒等态射);
  • 复合态射保持:对$\mathcal{C}$里的两个可复合态射$f: X \rightarrow Y$和$g: Y \rightarrow Z$,$F(g \circ f) = F(g) \circ F(f)$(态射复合的顺序在映射后依然严格对应)。

函子是函数吗?

答案是:不是普通意义上的函数,但可以看作是一种“高阶映射”。

  • 普通函数是集合元素之间的映射,只处理“元素”这一层;
  • 函子是范畴之间的结构保持映射,它同时处理“对象”和“态射”两层,而且必须严格维护范畴的核心结构(恒等和复合)。

当然,如果你把范畴的对象单独抽出来看作一个集合,那函子对对象的映射部分确实有点像集合之间的函数,但函子的态射映射部分是普通函数完全没有的——这也是函子能刻画“结构之间的关系”的核心能力。

举个直观的例子

比如集合范畴$\text{Set}$到自身的幂集函子$P$:

  • 对象映射:对每个集合$X$,$P(X)$是$X$的所有子集构成的集合(幂集);
  • 态射映射:对每个函数$f: X \rightarrow Y$,$P(f)$是把$X$的子集$S$映射到$Y$的子集${f(s) | s \in S}$的函数;
  • 验证结构保持:$P(\text{id}_X)$就是幂集上的恒等函数,$P(g \circ f)$和$P(g) \circ P(f)$都是把$X$的子集映射到$Z$的子集的同一个函数,完全符合函子的规则。

再比如遗忘函子:从群范畴$\text{Grp}$到集合范畴$\text{Set}$,它把每个群映射成它的底层集合(忘掉群的运算结构),把每个群同态映射成对应的集合函数——这也是个函子,因为同态的恒等和复合都被完美保持了。

内容的提问来源于stack exchange,提问作者soap

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 07:34:24