IO Monad vs读者Monad

时间:2019-07-03 20:49:33

标签: scalaz scala-cats cats-effect scalaz-zio

我想知道IO Monad和Reader monad之间有什么关系吗?

Reader monad中的环境会产生影响吗?如果是这样,ZIO或Cats IO,scalaz效果如何处理Reader Monad原理?

1 个答案:

答案 0 :(得分:2)

Reader中的环境通常不会产生影响-不必如此。

要了解原因,首先需要了解Reader monad是对功能A => B的抽象,其中A是某种环境。

通常,如果您有F[A]的效果,则可以始终使用map的{​​{1}}-函数对值进行Reader,对吗?

对于applycats-effect仅定义为Reader(对功能Kleisli的抽象),其中A => F[B]被定义为{{1} }。 F[_]提供了组成方面所需的一切,这就是为什么type F[A] = A被定义为Kleisli的子集的原因。您可以详细了解here

对于Reader,情况看起来有些不同。

看看定义:Kleisli。这三个类型参数描述了环境(ZIO),错误类型(ZIO[R, E, A])和结果类型(R)。

这意味着E已经是AZIO单子的组合。 在IO中,您可以使用Reader-函数访问环境。