Maa*_*mon 1 scalaz scala-cats cats-effect zio
我想知道 IO Monad 和 Reader monad 之间有什么关系吗?
Reader monad 中的环境可以产生效果吗?如果是这样,ZIO 或 Cats IO、scalaz-effects 如何处理 Reader Monad 原则?
a 中的环境Reader通常不是效果——也没有必要。
要理解为什么,首先需要理解 monadReader是函数的抽象A => B,其中A是某种环境。
一般来说,如果你有一个effect F[A],你总是可以使用's - 函数map来获取值,对吧?Readerapply
对于cats-effect, aReader被简单地定义为 a Kleisli(函数的抽象A => F[B])并被F[_]定义为type F[A] = A。Kleisli提供了您在组合方面所需的一切,这就是为什么Readers 被定义为Kleislis 的子集。你可以在这里读更多关于它的内容。
对于ZIO,事情看起来有点不同。
看一下定义:ZIO[R, E, A]。这三个类型参数描述了环境(R)、错误类型(E)和结果类型(A)。
这意味着它已经是和monadZIO的组合。在 中,您可以使用 - 函数访问环境。IOReaderZIOaccess