单子 (范畴论)

数学的分支范畴论中，单子（monad），又称三元组（triple, triad）、标准构造（standard construction）、基本构造（fundamental construction），是一个（即由某范畴映到自身的函子），连同满足特定的两个自然变换，三者构成的整体。单子用于研究互为伴随的函子对，并将偏序集上的闭包算子推广到任意范畴。
导论与定义.
单子是一类（连同其他资讯）。例如，若formula_1和formula_2为一对伴随函子，formula_1为formula_2的左伴随，则复合formula_5是单子。若formula_1与formula_2互为逆函子，则对应的单子是恒等函子。一般而言，伴随关系并不等同范畴的等价，而可以联系不同性质的范畴。为了探讨伴随关系所「保持」的性质，数学家研究单子论。理论的另一半，即藉考虑formula_8，以研究伴随关系，是单子论的对偶理论。该类函子称为余单子（comonad）。
严格定义.
本条目中，formula_9皆表示某范畴。formula_9上的单子是函子formula_11，连同两个自然变换，分别是单位formula_12（其中formula_13是formula_9上的恒等函子）与乘法formula_15（其中formula_16是复合formula_17，亦是formula_9到formula_9的函子），且要满足下列：
以上两式，亦可以下列交换图复述：
记号formula_22与formula_23的含义，参见自然变换，又或考虑以下更具体的写法，不用水平复合记号，并将各函子作用在任意物件formula_30上：
定义中，若将formula_31当成幺半群的乘法，则第一条公理类似的乘法结合律，而第二条公理类似单位元的存在性（由formula_32给出）。准确而言，formula_9上的单子，可以等价地定义为formula_9的内函子范畴formula_35中的。（该范畴的物件是formula_36上的内函子，而态射是内函子间的自然变换，幺半结构来自内函子的复合运算。）如此，单子不仅在形式上具有与幺半群相似的公理，甚而单子就是幺半群的特例。
幂集单子.
幂集单子formula_37是集合范畴formula_38上的单子。其定义中，函子formula_27取为幂集运算，即formula_40为集合formula_41的幂集，而对于函数formula_42，formula_43将formula_41的子集映至其像集，即formula_45。对每个集合formula_41，有函数formula_47，对每个元素formula_48映至单元子集formula_49， 并有函数
将formula_41的若干个子集构成的族，映至该些子集的并集。以上是幂集单子的定义。
两个单子的复合，未必为单子。举例，幂集单子formula_52的二次叠代formula_53，无法配备单子结构。
余单子.
取上节定义的，便是余单子（或余三元组）的定义。简单复述，范畴formula_9上的余单子，是formula_55上的单子。所以，余单子是由formula_9到formula_9的某个函子formula_58，连同余单位与余乘法（counit and comultiplication）两个自然变换，组成的整体，而三者所要满足的公理，是将原定义中所有态射反转方向而得。
单子之于幺半群，如同余单子之于余幺半群。每个集合皆是余幺半群，且仅有唯一一种方式，所以抽象代数中，较少考虑余幺半群。然而，在线性代数中，向量空间范畴（配备张量积）的余幺半群较为重要，以余代数之名为人所知。
历史.
单子的概念最早由于1958年提出，当时称为「标准构造」（standard construction）。实际上，该书用到的是余单子，用作解决某个问题。
其后，单子又出现于彼得·胡伯（Peter Huber）对范畴同伦的研究中。该论文包含由任意一对伴随函子得出单子的证明。
1965年，，及塞缪尔·艾伦伯格、二人分别独立证明反向的结论，即每个单子皆可由某对伴随函子产生。后一篇论文中，将单子称为「三元组」。
1963年，提出泛代数的范畴论。1966年，弗雷德·林顿（Fred Linton）将该理论用单子的语言表达。单子本身来自拓扑方面的考量，事先似乎比洛维尔的理论更难处理，但已成为用范畴论语言阐述泛代数的方法中，较常见的一个。现今常用的英文名称monad是1971年由桑德斯·麦克兰恩在《》引入，以其类似单子论中的同名哲学概念，即某种能生出其他所有事物的实体。
1980年代，在理论计算机科学中，利用单子，为电脑程式的若干方面建立模型，包括例外处理、边界情况。此后，有多种函数式编程语言仔细实作此想法，作为一种基本规律，同样称为单子。2001年，若干数学家注意到，用单子研究程式标志语意的方法，与洛维尔的理论，两者之间有关联。。此为代数与语义间的联系，是后来活跃的研究课题。
例子.
伴随的复合.
若有伴随关系
（即formula_1为formula_2的左伴随，下同），则由此有formula_9上的单子。此普遍的构造，取内函子为复合
而单位自然变换来自伴随的单位formula_64，乘法自然变换源自伴随的余单位formula_65：
反之，给定单子，可以明确找回一对伴随函子，使单子为该对伴随函子的复合。此构造用到下节定义的formula_27代数的艾伦伯格－摩尔范畴formula_68。
两重对偶.
给定域formula_69，双重对偶单子（double dualisation monad）源自伴随关系
其中两个函子formula_71皆将formula_69向量空间formula_73映至对偶空间formula_74，所以对应的单子将向量空间formula_73映至双对偶formula_76。对此有更广泛的讨论。
偏序集的闭包算子.
偏序集formula_77可以视为特殊的范畴，任意两件物件之间有最多一支态射，且formula_78到formula_79有态射当且仅当偏序中formula_80。于是，偏序集之间的函子，即是保序映射，而伴随函子对，则组成两偏序集间的伽罗瓦连接，相应的单子是伽罗华连接的闭包算子。
自由遗忘伴随.
又举例，设formula_2为群范畴formula_82至集合范畴formula_38的遗忘函子，将群映至其基集，又设formula_1为自由函子，由formula_38到formula_82，则formula_1是formula_2的左伴随。此时，对应的单子formula_89的作用是，输入一个集合formula_30，输出自由群formula_91的基集，即字母取自formula_92，且无相邻两个字母互为逆元的字串的集合。
该单子的单位变换，由包含映射
给出，该包含映射将formula_30的任意元素，看成仅得一个字元的字串，从而是formula_95的元素。最后，单子的乘法
是串接或「压平」运算，将若干条字串组成的串，映至该串中所有字串前后连接而成的一条字串。至此描述完单子的两个自然变换。
前述例子中，自由群可以推广至其他种类的代数结构，即泛代数意义下的任意一代数。如此，每类代数定义了集合范畴上的一个单子。更重要的是，该类代数的范畴，可从单子找回，即单子的艾伦伯格－摩尔代数范畴，故单子可视为泛代数之簇的推广。
另外，尚有一个单子源自伴随关系。在向量空间范畴formula_97上，若formula_27表示将向量空间formula_73映至其张量代数formula_100的内函子，则相应有单位自然变换将formula_73嵌入到其张量代数，并有乘法自然变换，在formula_73处的分量是态射formula_103，将张量积之张量积展开化简。
余密度单子.
只要满足某些不强的条件，无左伴随的函子也可以产生单子，称为。例如，从有限集合范畴formula_104到集合范畴formula_38的包含函子无法配备左伴随，但其余密度单子定义在formula_38上，将任意集合formula_30映至其上所有超滤子的集合formula_108。 类似例子见于。
单子的代数.
给定范畴formula_9上的单子formula_110，可以考虑formula_9中的formula_112代数物件。formula_27在该些物件上的作用，与单子的单位与乘法相容。具体而言，formula_112代数formula_115是formula_9中的物件formula_78，连同态射formula_118（称为该代数的结构映射），使得图
皆可交换。
formula_27代数间的态射formula_120是formula_9中的态射formula_122，且要使。于是，formula_27代数及之间的态射组成范畴，称为艾伦伯格－摩尔范畴（Eilenberg–Moore category），记为formula_124.
例子.
自由群单子上的代数.
若formula_27为前述自由群单子，则formula_27代数是集合formula_30，连同由formula_30生成的自由群formula_91到formula_30的映射（求值，evaluation），且该映射要满足结合律与单位元的公理。换言之，formula_30本身就具有群结构，而formula_91至formula_30的映射，是将字串按formula_30的群乘法，计算所得的结果
分布单子上的代数.
另一个例子是集合范畴上的分布单子（distribution monad）formula_135，其将集合formula_30映至其上所有有限支撑的概率分布的集合。该等分布，是函数formula_137，仅于有限多个元素formula_138处取值非零，而各元素处取值之和为formula_139。以符号表示，
可由定义证明，分布单子上的代数，等同于凸集，即集合要配备二元运算formula_141（对每个formula_142），满足的公理比照欧氏空间中，凸组合formula_143具备的性质。
对称单子上的代数.
另一个有用的单子，是交换环formula_144的模范畴formula_145上的对称代数单子
将formula_144模formula_148映到各阶幂的直和
其中formula_150。例如，formula_151，左右两边作为formula_144模同构。如此，对称代数单子上的代数，是交换formula_144代数。类似地，也有反对称张量单子formula_154与全张量单子formula_155，相应的代数分别是反对称formula_144代数与自由formula_144代数，故
前者是formula_144上添加formula_160个生成元的自由反对称代数，而后者则是formula_160个生成元的自由代数。
E∞环谱中的交换代数.
对于，亦有类似的构造，对于可交换formula_162代数formula_41，对应单子上的代数是可交换的formula_41代数。若formula_165表示formula_41模的范畴，则可以考虑函子formula_167，定义为
其中
此函子是单子，而由该单子上的代数范畴，可以得到可交换formula_41代数的范畴formula_171。
单子与伴随.
如前文所述，任何伴随关系皆产生单子。反之，每个单子formula_27皆可由某个伴随关系产生，即原范畴与formula_27代数的艾伦伯格－摩尔范畴之间的自由－遗忘伴随
其中，左伴随formula_175将formula_9的物件formula_78映到自由formula_27代数formula_179，右伴随formula_1则将formula_27代数formula_182遗忘掉formula_183，变回formula_78。然而，通常有多组不同的伴随关系产生同样的单子，该些伴随关系组成范畴formula_185：物件是伴随关系formula_186使得formula_187，而态射是在formula_9一侧为恒等函子的伴随关系态射。如此，艾伦伯格－摩尔范畴的自由－遗忘伴随formula_124是formula_185的终物件，而始物件是formula_191，定义为formula_124中的自由formula_27代数组成的完全子范畴，即仅包含形如formula_179的formula_27代数，其中formula_78历遍formula_197的物件。
单子伴随.
设有伴随关系formula_198，对应单子为formula_27，则函子formula_2可分解为
其中formula_1是遗忘函子。换言之，对formula_203中任意物件formula_204，都能赋予formula_205自然的formula_27代数结构。若分解式中，首个函子formula_207给出formula_203与formula_68两范畴间的等价，则形容该伴随关系为单子的（monadic）。后亦引申用作形容函子，若函子formula_210有左伴随formula_1，且该伴随关系为单子的，则formula_2亦称为单子的。例如，群范畴与集合范畴间的自由－遗忘伴随是单子的，因为相应单子formula_27上的formula_27代数是群（见前文）。一般而言，若有伴随关系formula_198为单子的，则单从formula_9的物件及其上的formula_27作用，已足以重组出formula_203的物件。
贝克单子性定理.
贝克单子性定理给出伴随关系在何种充要条件下为单子的。定理有以下简化版：
若满足以下三项条件：
则formula_2为单子的。
例如，由紧豪斯多夫空间范畴formula_227到集合范畴formula_38的遗忘函子是单子的。然而，由任意拓扑空间范畴formula_229到集合范畴formula_38的遗忘函子则并非单子的，而定理中，保守函子的条件不成立，因为有非紧或非豪斯多夫空间，之间存在连续双射，但不为同胚。
贝克定理有对偶版本，刻划余单子伴随关系，对拓扑斯论及有关的代数几何课题有用。
余单子的伴随关系，首先有下列例子：
其中formula_232皆为交换环，左伴随用到的张量积formula_233的定义中，选定了环同态formula_234，而右伴随formula_1是遗忘函子。根据贝克定理，当且仅当formula_236为忠实平坦formula_41模时，该伴随为余单子的。所以，可将配备下降数据（descent datum，即源自伴随关系的余单子的作用）的formula_236模，降成formula_41模。所得的理论，广泛应用于代数几何。
用途.
函数式编程中，会使用单子表达某类（有时有副作用的）顺序式计算，见单子 (函数式编程)。
范畴论逻辑中，藉闭包算子、内代数，以及两者与S4模态逻辑、直觉主义逻辑的关系，能以单子余单子理论类比模态逻辑。
推广.
亦可定义2-范畴formula_9中的单子。