3

在尝试理解某些概念时,我经常遇到“邻接”一词。这些东西对我来说太抽象了,因为我既不是领域专家也不是范畴论专家。

我发现的最简单的情况是一个Monoid Maybe a实例,它的行为通常与我有时对Nothing.

Wikipedia中我们可以了解到,通过将一个元素“邻接”到一个半群,我们可以获得一个不同的Monoid实例。我不明白这句话,但给出的方程式表明这正是我需要的(并且由于某种原因不是默认的):

任何半群 S 都可以简单地通过邻接不在 S 中的元素 e 并为所有 s ∈ S 定义 e • s = s = s • e 变成一个幺半群。

  • 至少在这种情况下,“相邻”是否与“添加”相同?
  • 这个概念还有其他简单的例子吗?
  • 什么是“左伴随”的最简单的可能实例?
4

1 回答 1

10

有时“相邻”的意思是“添加新的东西”,就像你引用的与半群相关的句子一样。例如,有人可能会说 usingMaybe a意味着将新元素添加/连接Nothing到 type a。不过,就个人而言,我只会为此使用“添加”。

这与分类意义上的伴随词无关,这是一个棘手的概念。

粗略地说,假设你有一个函数类型的表单

F a -> b

哪里F是从类型到类型的一些映射(更准确地说,是函子)。有时,您可以将同构类型表达为上述具有以下形式的类型

a -> G b

F左侧的函数“神奇地”移动到右侧,变为G.

典型的例子是柯里化:让例如

F T = (T, Int)
G T = Int -> T

然后我们有

   (F a) -> b 
-- definition of F
=  (a, Int) -> b
-- currying
=~ a -> (Int -> b)
-- definition of G
=  a -> G b

在这种情况下,我们将F -| G其写为“与”F相伴G

每次您可以“很好地移动”箭头另一侧的输入类型上的操作,将其更改为输出类型上的另一个操作时,您就有了一个伴随。(技术上,“nicely”意味着我们有一个自然的同构)

于 2016-09-23T15:12:57.543 回答