gpt4 book ai didi

haskell - 更一般背景下的自然变换

转载 作者:行者123 更新时间:2023-12-04 01:24:41 26 4
gpt4 key购买 nike

在创建更通用的 Monad 的过程中,我一直在通过 Haskell 中的一些类别理论来构建自己的方法。

在我进入下一步之前,我需要能够处理自然变换。

现在常规的自然变换 Functor s 很简单,它们只是函数

trans :: forall a . F a -> G a

(其中 FGFunctor s)具有额外的限制
fmap f . trans = trans . fmap f

等价于交换图:

commutative diagram

然而,当我转向更分类的仿函数时
class
( Category cat1
, Category cat2
)
=> Functor cat1 cat2 f
where
map :: cat1 a b -> cat2 (f a) (f b)

我不确定如何增加自然变换的定义以跟上。

该图暗示
trans :: forall a . cat2 (F a) (G a)

在哪里
Functor cat1  cat2 F
Functor cat1' cat2 G

然而,我不清楚 cat1 ~ cat1' 一定是这种情况。 .或者转换和两个仿函数的前范畴之间的关系是什么。

在更广泛的 Haskell 上下文中,自然转换是什么样子的 Functor超过更一般的类别?

最佳答案

However it is not clear to me that it must be the case that cat1 ~ cat1'.



仿函数 F 和 G 具有相同的域和余域,这是自然变换定义的一部分。 From nlab :

Given categories C and D, and functors F, G : C -> D



因此,Haskell 中定义的直接翻译是仿函数之间的自然转换 F, G与域 cat1和codomain cat2作为一个多态项,一个态射族 cat2 (F a) (G a)按对象索引 a :

n :: forall a. cat2 (F a) (G a)

使得某个图通勤所有 f :: cat1 a b ,即我们有以下等式,其中 (.)是在 cat2 中的组成:

fmap f . n = n . fmap f

哪里 n专攻类型 a在左侧,输入 b在右边。

请注意,这种编码的表达能力有限,因为 Haskell forall与英语“for all”不同。 n :: forall a. ...的行为不能真正依赖 a . forall暗示了一种在“自然变换”的定义中找不到的“均匀性”(又名参数化)形式。

关于haskell - 更一般背景下的自然变换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62106430/

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