gpt4 book ai didi

haskell - 实际使用中邻接是什么意思?

转载 作者:行者123 更新时间:2023-12-02 15:26:46 25 4
gpt4 key购买 nike

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

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

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

Any semigroup S may be turned into a monoid simply by adjoining an element e not in S and defining e • s = s = s • e for all s ∈ S.

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

最佳答案

有时“毗邻”意味着“添加新的东西”,就像您引用的与半群相关的句子中一样。例如。有人可能会说,使用 Maybe a 意味着向 a 类型添加/连接一个新元素 Nothing。不过,就我个人而言,我只会使用“添加”。

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

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

F a -> b

其中 F 是从类型到类型(更准确地说,仿函数)的某种映射。有时,您可以将同构类型表达为上述形式

a -> G b

左侧的函数F“神奇地”移到了右侧,变成了G

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

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”。

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

关于haskell - 实际使用中邻接是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39663982/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com