Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 如何实现两个cats.effect.IO单子的非严格排序?_Scala_Scala Cats - Fatal编程技术网

Scala 如何实现两个cats.effect.IO单子的非严格排序?

Scala 如何实现两个cats.effect.IO单子的非严格排序?,scala,scala-cats,Scala,Scala Cats,我的计算有三个步骤,如下所示: import cats.effect.IO def step1: IO[Unit] = ??? def step2: IO[Unit] = ??? def step3: IO[Unit] = ??? 我可以使用简单的理解方法将它们按顺序组合在一起: val c: IO[Unit] = for { _ <- step1 _ <- step2 _ <- step3 } yield () val c:IO[Unit]=for{ _我想我

我的计算有三个步骤,如下所示:

import cats.effect.IO
def step1: IO[Unit] = ???
def step2: IO[Unit] = ???
def step3: IO[Unit] = ???
我可以使用简单的理解方法将它们按顺序组合在一起:

val c: IO[Unit] = for {
  _ <- step1
  _ <- step2
  _ <- step3
} yield ()
val c:IO[Unit]=for{

_我想我找到了。这似乎有效:

implicitly[cats.Cartesian[IO]].product(step1, step2)
(返回一个
IO[(单位,单位)]

编辑:更简洁地说:

import cats.implicits._
step1.product(step2)

我想我找到了。这似乎有效:

implicitly[cats.Cartesian[IO]].product(step1, step2)
(返回一个
IO[(单位,单位)]

编辑:更简洁地说:

import cats.implicits._
step1.product(step2)

在中,它明确声明cats效果库不处理并发或并行。

在中,它明确声明cats效果库不处理并发或并行。

更简洁地写为
cats.Cartesian[IO]。产品(step1,step2)
类似,同样有用的还有
cats.Applicative[IO].sequence
。将
Seq[IO[a]]
转换为
IO[Seq[a]]
。更简洁地写为
cats.Cartesian[IO]。product(step1,step2)
类似,同样有用的是
cats.Applicationive[IO]。sequence
Seq[a]
转换为
IO[Seq[a]