ZIO
is not dependent on Cats
, so it has its own methods to perform sequence
operations: ZIO.sequencePar
and ZIO.sequence
.
I tried to use sequence
provided by interop with Cats
and it works the same way as ZIO.sequence
:
import zio._
import zio.interop.catz._
import cats.implicits._
val t1: Task[Int] = ???
val t2: Task[Int] = ???
val t3: Task[Int] = ???
val seq = List(t1,t2,t3).sequence // <-- t1,t2,t3 are executed sequentially
(new DefaultRuntime {}).unsafeRun(seq)
Can I make ZIO
treat sequence
as ZIO.sequencePar
, so I could run tasks in parallel?
It seems that ZIO
needs some implementation of parallel Traverse
for Cats
, but I can't find any.
Here are my dependencies:
libraryDependencies += "dev.zio" %% "zio" % "1.0.0-RC10-1"
libraryDependencies += "dev.zio" %% "zio-interop-cats" % "2.0.0.0-RC1"
Edit:
With help of @AndreyTyukin I found that to make it works in parallel I need to run List(k,k2,k3).parSequence
which use instance of typeclass Parallel
available in zio-interop-cats
lib. And @LuisMiguelMejíaSuárez 's comments for this question give some explanation of why we have to use Parallel
.