gpt4 book ai didi

haskell - Traversable 定律是否可以从每个 Traversable 也是 Functor 的事实中推导出来?

转载 作者:行者123 更新时间:2023-12-03 01:31:22 27 4
gpt4 key购买 nike

我一直在想为什么 Traversable 类型类需要 FunctorFoldable,而不仅仅是 Foldable ,因为它不使用仿函数的任何部分?

class (Functor t, Foldable t) => Traversable t where
traverse :: Applicative f => (a -> f b) -> t a -> f (t b)
sequenceA :: Applicative f => t (f a) -> f (t a)

这似乎是 Traversable 的法则 were not present in the documentation for base 4.6 ,这让我认为它们可以源自以下事实:每个 Traversable 都是一个 Functor

Essence of the Iterator Pattern paper (section 5.1)它指出,traverse 有一些直接来自其类型的自由定理,但本文没有深入描述为什么会出现这种情况。

Traversable在哪里laws as described in the base 4.7 documentation从哪里来?

最佳答案

基本上,任何在其参数中协变的类型构造函数 * -> * is canonically a functor 。由于 Applicative f 显然是协变的,因此签名 sequenceA::t (f a) -> f (t a) t 也有意义,因此仿函数的要求本质上是多余的。但就像长期缺失的 Applicative => Monad 父类(super class)一样,忽略这种“明显”的要求并不是一个好主意,它只会导致代码重复和令人困惑的同义函数。

关于haskell - Traversable 定律是否可以从每个 Traversable 也是 Functor 的事实中推导出来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25037098/

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