gpt4 book ai didi

haskell - `arr fst` 是如何自然转换的?

转载 作者:行者123 更新时间:2023-12-05 08:05:48 25 4
gpt4 key购买 nike

我问了this question不久前。这是关于以下箭头法则:

arr fst . first f = f . arr fst -- (.) :: Category k => k b c -> k a b -> k a c

在帖子下评论Asad Saeeduddin自然变换来解释它。我想检查一下他们的解释是否正确,并将其与 Bartosz Milewski's article on natural transformations 进行比较.

因此,自然变换的定义是:

我们有两个类别 CD 以及仿函数 F, G : C ~> D。自然变换 αD 中的一组箭头,使得:

  1. 这些箭头从 F 的结果指向 G 的结果。也就是说,C 中的每个对象 a 都存在一个箭头(称为 α组件 a) α_a::F a ~> G a.
  2. 对于每个 f::a ~> bab 都是 C 中的对象,成立: Gf。 α_a = α_b 。 Ff。这就是自然。

基本上,我们需要弄清楚我们的例子中有哪四个变量:CDFG.

据我所知:

  • CD是同一类任意类型,k a b是其中的箭头,其中k 是我们正在使用的 Arrow 实例。因此,FG 是内仿函数。

  • F(, c)GIdentity。换句话说,如果我们不再使用类型,我们将 F 映射到 first 并将 G 映射到 id。从类型的角度考虑NOT可能会更容易,因为 CategoryArrow 类帮助我们构造类别的箭头,而不是对象

这样对吗?

此外,Bartosz Milewski wrote those ideas down像那样:

fmap f . alpha = alpha . fmap f

据我所知,我们需要一个更通用的形式来实现我们的目的,如此处 alpha::forall a。 F a -> G a 仅将 Hask 作为其工作的类别进行处理。还是我错了? fmap在这幅图中的哪个位置?

最佳答案

As far as I get it:

  • C and D are the same category of arbitrary types, k a b being arrows in it, where k is the Arrow instance we are working with.Therefore, F and G are endofunctors.

  • F is (, c) and G is Identity. In other words, if we no longer work with types, we map F with first and G with id.[...]

是的,就是这样。 arr fst::k (b, c) bkc 的每个选择都为我们提供了 ( , c) endofunctor 和 k 类中的恒等仿函数。执行特化给我们一个看起来更像自然转换的签名:

arr @K (fst @_ @C) :: forall b. K (b, C) b

Moreover, Bartosz Milewski wrote those ideasdownlike that:

fmap f . alpha = alpha . fmap f

As far as I get it, we need a more general form for our purposes ashere alpha :: forall a. F a -> G a deals with Hask only as thecategory it works with. Or am I wrong? Which place does fmap have inthis picture?

也正确。 fmap 必须被所涉及的仿函数的任何适当的态射映射所取代。在您的示例中,这些恰好是 firstid,正如您之前注意到的那样,这让我们回到了我们开始的箭头法则。

(至于用更一般的类比替换fmapFunctor的方法,它从特定的仿函数态射映射中抽象出来,需要进行适当的安排,以便我们可以在 Haskell 代码中表达涉及非 Hask 类别的仿函数。您可能想看看 constrained-categoriesdata-category 是如何处理的。)

关于haskell - `arr fst` 是如何自然转换的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63639328/

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