将List[Task[Boolean]]转换为EitherT[Task, Throwable, Unit]



我有一个List[Task[Boolean]],我需要把它变成EitherT[Task, Throwable, Unit]

我有一个可能的解是

EitherT(Task.delay(if (!allAsserts.contains(false)) /-(()) else -/(new Exception("BOOM"))))

但我想知道是否有可能创建EitherT而不显式调用Task.delay

也许上面的代码是正确的,但我只是想知道是否有其他选择

也许是这个?

lazy val toDisjuction: List[Boolean] => /[Throwable, Unit] = list =>
  if (list.forall(_ == true)) /-(()) else -/(new Exception("BOOM"))
val ltb: List[Task[Boolean]] = ???
EitherT(Task.gatherUnordered(ltb) map toDisjunction)

我想这就是我想要的……

最新更新