为什么 Scalaz 中没有 Array 的 Functor 实例

Why is there no Functor instance for Array in Scalaz

看起来 scalazList 提供了一个 Functor 实例,但没有为 Array(或 Seq)提供它。

scala> val fa = Functor[Array]
<console>:17: error: could not find implicit value for parameter F: scalaz.Functor[Array]
       val fa = Functor[Array]
                       ^
scala> val fl = Functor[List]
fl: scalaz.Functor[List] = scalaz.std.ListInstances$$anon@20c4b59

scala> val fl = Functor[Seq]
<console>:17: error: could not find implicit value for parameter F: scalaz.Functor[Seq]
       val fl = Functor[Seq]
                       ^

这是为什么?它们不是函子吗?

Scalaz 要求对象遵循 Functor 秒的规律。它还规定了代码构造的 "everything immutable" 哲学。也就是说,Array 是可变的,因此他们不会为其创建 Functor 实例。另一方面,Seq 是一个抽象接口,不知道 "correct" 数据类型是什么。也就是说,对于 Seq 如何知道要 return 哪个基础对象从而不违反任何法律?