【发布时间】:2019-03-19 07:17:42
【问题描述】:
我想明白,为什么例如Maybe 类型是协变函子?
协变是什么意思?
请举例说明。
【问题讨论】:
-
协变函子被描述为here (FPComplete.com)。有一个使用
Maybe的例子。 -
这道题主要是关于数学的。 Haskell 中的所有
Functors 都是协变的。逆变函子将是具有函数contramap :: (a -> b) -> f b -> f a的类型f- 请注意,与fmap相比,生成的函数具有“反向”箭头。 This does exist in Haskell,但不像(协变)Functor那样普遍。 -
This is a question about mathematics primarily这让 Haskell 害怕学习。我不是数学家,但我想了解它。问题是,如何向非数学家解释? -
@zero_coding 我不会说这真的是关于数学的。这个概念确实来自数学(特别是范畴论),但你真的不需要知道数学来理解这个概念。我发现这对于 Haskell 来说也是如此。
-
澄清一下——我完全同意@bradrn 的观点,即您无需了解任何深奥的数学知识即可使用 Haskell。这实际上就是我想说的,在某种程度上——“协变意味着什么”这个问题是一个关于数学的问题,你不需要知道或理解这个术语就可以在 Haskell 中使用 Functor。我不知道如何在不谈论数学而不是 Haskell 的情况下回答这个问题——但显然有 2 个人做到了并且写出了很好的答案。抱歉,如果这听起来像是我试图让你失望,那与我的意图完全相反。
标签: haskell