reduce<R extends Object> method
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);
}
}