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

时间:2016-11-07 14:12:21

标签: scala scalaz

我有一个window.onload = function() { body = document.getElementsByTagName('body')[0] body.addEventListener('mousedown', function() { event.preventDefault(); }) } ,我需要将其变成List[Task[Boolean]]

我有一个可能的解决方案

EitherT[Task, Throwable, Unit]

但我想知道是否可以在不明确调用EitherT(Task.delay(if (!allAsserts.contains(false)) \/-(()) else -\/(new Exception("BOOM")))) 的情况下创建EitherT

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

1 个答案:

答案 0 :(得分:0)

也许这个?

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)

我认为这就是我要找的......