找不到隐式 [...] 参数 F: scalaz.Functor[Iterable] with Scalaz OptionT
Could not find implicit [...] parameter F: scalaz.Functor[Iterable] with Scalaz OptionT
我有以下代码:
OptionT(currentFactors.values).map(_.priceHistory.toList)
currentFactors.values // Iterable[Option[A]]
priceHistory // Vector[Double]
但是我得到这个错误:could not find implicit value for parameter F: scalaz.Functor[Iterable]
。
我在使用 scala.Future
和 OptionT
时遇到了同样的问题,但通过混入 scalaz.std.FutureInstances
解决了它。
但是,我无法解决这个问题。我需要做什么?同时,Iterable
(或Future
)的Functor
是什么?
Scalaz 没有为 Iterable
提供 Functor
实例。一个简单的解决方案是更改为 List
:
OptionT(currentFactors.values.toList).map(_.priceHistory.toList)
ScalaZ 确实为未来提供了仿函数:
import scalaz.syntax.functor._
import scalaz.std.scalaFuture.futureInstance
val future: Future[Int] = ???
future ∘ {_ + 1}
对于 Iterable
它确实提供了某些类型类(如 Foldable
和 Equal
),但不提供 Functor
因为它不满足函子定律(Set
是一个 Iterable
)
所以只需 toVector
或 toList
来使用集合 ScalaZ 确实有仿函数 for.
我有以下代码:
OptionT(currentFactors.values).map(_.priceHistory.toList)
currentFactors.values // Iterable[Option[A]]
priceHistory // Vector[Double]
但是我得到这个错误:could not find implicit value for parameter F: scalaz.Functor[Iterable]
。
我在使用 scala.Future
和 OptionT
时遇到了同样的问题,但通过混入 scalaz.std.FutureInstances
解决了它。
但是,我无法解决这个问题。我需要做什么?同时,Iterable
(或Future
)的Functor
是什么?
Scalaz 没有为 Iterable
提供 Functor
实例。一个简单的解决方案是更改为 List
:
OptionT(currentFactors.values.toList).map(_.priceHistory.toList)
ScalaZ 确实为未来提供了仿函数:
import scalaz.syntax.functor._
import scalaz.std.scalaFuture.futureInstance
val future: Future[Int] = ???
future ∘ {_ + 1}
对于 Iterable
它确实提供了某些类型类(如 Foldable
和 Equal
),但不提供 Functor
因为它不满足函子定律(Set
是一个 Iterable
)
所以只需 toVector
或 toList
来使用集合 ScalaZ 确实有仿函数 for.