我有一个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)
我想这就是我想要的……