Mic*_*ael 4 arrays scala functor scalaz
它看起来像scalaz提供了一个Functor实例,List但没有为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$1@20c4b59
scala> val fl = Functor[Seq]
<console>:17: error: could not find implicit value for parameter F: scalaz.Functor[Seq]
val fl = Functor[Seq]
^
Run Code Online (Sandbox Code Playgroud)
这是为什么 ?他们不是算子吗?
Scalaz要求对象遵循Functors 的定律.它还规定了代码构造的"一切不可变"的哲学.也就是说,它Array是可变的,所以他们不会Functor为它创建一个实例.Seq另一方面,它是一个抽象接口,不知道"正确"的数据类型是什么.也就是说,Seq如何知道要返回哪个底层对象,因此不违反任何法律?