在单半群定义中,不理解态射符号的含义

11

我试图从范畴论的角度理解 Monoid 是什么,但是我对用来描述它的符号有些困惑。以下是维基百科上的定义:

在范畴论中,一个(单)幺半群对象(M, μ, η)指的是一个幺模范畴(C, ⊗, I)中的对象M,以及两个态射

μ: M ⊗ M → M,称为乘法(multiplication),

η: I → M, 称为单位元(unit)

我的困惑在于对于这个态射符号的理解。为什么二元操作 是其中一个态射的一部分呢?我对于态射的理解是它是一种函数,可以将一个类型映射到另一个类型(从定义域到值域),比如像 M → M。为什么操作 是在定义中作为该态射的定义域呢?第二个疑惑是关于 I。为什么 I 是一个定义域呢?在 Monoid 对象中并没有 I 对象。它只是对象 M 的中性元素。

我理解 Monoid 是一个只有一个对象、恒等态射和二元操作的范畴,但是符号使我感到自己似乎理解错了些什么。

是否 M ⊗ M 与笛卡尔积有关,因此该态射的定义域被定义为 M x M

编辑:我在数学堆栈交换上得到了一个非常有帮助的答案。


5
你从集合论的角度理解单子群(monoid)了吗?定义就是定义,关于“为什么定义是这样”的问题很难回答,除了我们观察到有一堆我们想要以统一方式谈论的事情符合这种方式之外。所以我无法想象明智地回答那个问题。但我可以想象出一个合理的回答:“这个定义如何与集合论定义的不同部分相对应?” - Daniel Wagner
好的。既然你(现在已删除)的评论表明你理解了集合论的定义,如果我回来后还没有答案,我会写一篇描述两个定义部分对应以及与定义引出的具有一个对象的范畴的联系的文章。 - Daniel Wagner
8
警告!这里涉及到不同但相关的概念!一个只有一个对象的范畴对应于传统意义上的幺半群(例如,你可以通过原地跳跃的方式从你所在的位置到达你所在的位置的方法)。而“幺结合范畴”的概念则是另一回事:它们可以拥有更加有趣的对象集合,在其中(X)和I会引发类似于幺半群的结构(在Haskell类型中,逗号(,)具有关联性并吸收()的特点,直到同构)。 - pigworker
3
单型范畴”这个词很重要,它是你正在询问的运算符的来源。你似乎忽视了它们。 - luqui
@BogdanVakulenko 是的,I -> M是从对象I的一个态射。你为什么说I不是一个对象?是的,M ⊗ M是一种域。这些符号是由你引用的“一个融合范畴(C,⊗,I)”定义中引入的。 - Daniel Wagner
显示剩余2条评论
1个回答

20

是否可以将 M ⊗ M 理解为笛卡尔积,因此态射的定义域被定义为 M x M

完全正确。更具体地说,我们从 baseMonoid 类中选择 Hask(所有 Haskell 类型作为对象,所有 Haskell 函数作为态射的范畴)作为 C(,)(对类型构造器)作为 ()(单位类型)作为 I 来得到这些由 Monoid 类表达的幺半群。然后,μη 的签名,翻译成 Haskell,变成了:

μ :: (M, M) -> M
η :: () -> M
通过将μ进行柯里化,并利用() -> M函数与M值一一对应的方式(它们都看起来像\() -> m,其中m是某个值),我们得到了熟悉的Monoid方法:
mappend :: M -> M -> M
mempty :: M

请注意,范畴论的定义远比 Monoid 更为普遍。例如,我们可以在保持使用 Hask 的同时,将 (,)() 替换为它们的对偶,EitherVoid,得到:

μ :: Either A A -> A
η :: Void -> A

每个 Haskell 类型都以这种特定的方式成为幺半群(μeither id id,而 ηabsurd)。


另一个例子是取 C 为 Haskell Functor 的范畴(它们之间的自然变换 - 我将其写为 type f ~> g = forall a. f a -> g a - 作为态射),Compose 作为 Identity 作为 I

-- Note the arrows here are ~>, and not ->
μ :: Compose M M ~> M
η :: Identity ~> M

这两个通常被写成:

-- "Inlining" the definitions of Compose, Identity, and ~>
join :: M (M a) -> M a
return :: a -> M a
换句话说,一个 Monad 是范畴 Functor 中的幺半群(它是"一个 monad 是自函子范畴中幺半群"这个概念在 Hask 上的特殊版本)。需要提到的是,和前面的例子一样,这并不是从该范畴获得幺半群的唯一方法(请参考此答案结尾的段落获取指针——实际上,它的其余部分可能也值得一读,因为它讨论了幺范畴的概念)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接