reduce<R extends Object> method

Resolvable<Option<R>> reduce<R extends Object>()

Reduces the monad to a Resolvable of an Option of type R.

Implementation

Resolvable<Option<R>> reduce<R extends Object>() {
  switch (this) {
    case _Single<T> single:
      return Ok(single.value).reduce();
    case Sync<T> sync:
      return sync.value.reduce();
    case Async<T> async:
      return _resolveAsync<R>(async);
    case Some<T> some:
      return _resolveValue(some.value);
    case None<T> _:
      return syncNone();
    case Ok<T> ok:
      return _resolveValue(ok.value);
    case Err<T> err:
      return Sync(() => throw err);
  }
}