Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/haskell/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Haskell 可遍历定律能否从每个可遍历函数也是函子这一事实中推导出来?_Haskell_Theory_Traversal - Fatal编程技术网

Haskell 可遍历定律能否从每个可遍历函数也是函子这一事实中推导出来?

Haskell 可遍历定律能否从每个可遍历函数也是函子这一事实中推导出来?,haskell,theory,traversal,Haskell,Theory,Traversal,我一直在想为什么可遍历类型类既需要函子又需要可折叠,而不仅仅是可折叠,因为它不使用函子的任何部分 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) 似乎是关于可遍历性的

我一直在想为什么
可遍历
类型类既需要
函子
又需要
可折叠
,而不仅仅是
可折叠
,因为它不使用
函子
的任何部分

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)
似乎是关于可遍历性的定律,这让我认为它们可以从每个可遍历性都是函子这一事实中推导出来

在本文中,它指出有一些关于
导线测量的自由定理直接来自于它的类型,但本文没有深入描述为什么会出现这种情况


可遍历的
从何而来?

基本上,任何类型的构造函数在其参数中都是协变的。由于
Applicative f
显然是协变的,因此签名
sequenceA::t(fa)->f(ta)
t
也是协变的,因此
函子
要求本质上是多余的。但就像长期缺少的,因为不需要的
Applicative=>Monad
超类一样,忽略这些“明显的”需求并不是一个好主意,它只会导致代码重复和混淆同义函数