是否有一种将Future [Reader [A,X]]转换为Reader [A,Future [X]]的一般方法?

时间:2016-12-09 13:13:36

标签: scala functional-programming scalaz

任何仿函数都可以实现这种转换,而不仅仅是Future

implicit class RichFunctorReader[F[_]: Functor, A, B](fr: F[Reader[A, B]]) {
  def toReaderFunctor: Reader[A, F[B]] = Reader { a => fr.map(_.run(a)) }
}

我想知道它是Reader monad的特殊属性,还是有一个更普遍的概念使这成为可能?

例如,当我们将Reader概括为Kleisli时,它不起作用,所以我怀疑Reader是一个“特殊情况”。

1 个答案:

答案 0 :(得分:4)

Reader的此属性称为Distributivecosequence方法实现了转换。