MonadErrorSyntax

)) map {
    case 1 => ()
  } recoverWith {
    case e => Future.failed(new Exception("error!!"))
  }
)) emap (_ == 1 either () or new Exception("error!!"))

warn: adaptation of argument list by inserting () is deprecated
either () => either (())

final class BooleanOps(self: Boolean) {

...

  final class ConditionalEither[A](a: => A) {
    def or[B](b: => B) = if (self) \/-(a) else -\/(b)
  }

...

  /**
   * Returns the first argument in `\/-` if this is `true`, otherwise the second argument in
   * `-\/`.
   */
  final def either[A](a: => A): ConditionalEither[A] = new ConditionalEither(a)