gpt4 book ai didi

scala - 如何从cats State创建cats IO monad

转载 作者:行者123 更新时间:2023-12-03 19:44:34 25 4
gpt4 key购买 nike

我和猫一起工作,我想改造我的 val x: State[A, B]StateT[IO, A, B] .注意:IO 来自cats-effects。

如何优雅地做到这一点?

最佳答案

试试 mapK结合 cats.arrow.FunctionK.lift :

x.mapK(lift(IO.eval))

完整的可编译代码片段:
import cats.effect.IO
import cats.data.{State, StateT}
import cats.arrow.FunctionK.lift

object InjectIdIO {
def i[S, V](x: State[S, V]): StateT[IO, S, V] = x.mapK(lift(IO.eval))
}

这是有效的,因为 State[S, A]实际上是 StateT[Eval, S, A] ,并且您想替换 Eval来自 IO - 这就是 mapK通常是为了。
kind-projector 的另一种选择:
x.mapK(Lambda[Eval ~> IO](IO.eval(_)))

关于scala - 如何从cats State创建cats IO monad,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56843234/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com