Пример #1
0
 public static async Task <Result <TResult, TError> > FoldAsync <TResult, T, TError>(
     this IEnumerable <Result <T, TError> > values,
     Result <TResult, TError> seed, Func <TError, TError, TError> mergeFunc,
     Func <TResult, T, Task <TResult> > aggrFunc)
 => await EnumerableExtensions.FoldAsync(values, seed,
                                         (acc, value) => AggrHelper.FuncAsync(acc, value, aggrFunc, mergeFunc))
 .ConfigureAwait(false);
Пример #2
0
 //Reduce on List<Option<T>>
 public static async Task <Option <T> > ReduceAsync <T>(this IEnumerable <Option <T> > values, Func <T, T, Task <T> > aggrFunc)
 {
     using (var enumerator = values.ThrowIfDefault(nameof(values)).GetEnumerator())
     {
         return(await InternalList.ReduceInternalAsync(enumerator,
                                                       (acc, val) => AggrHelper.FuncAsync(acc, val, aggrFunc))
                .ConfigureAwait(false));
     }
 }
Пример #3
0
 //TryReduceUntil on Result<T, TError>
 public static Task <Option <Result <T, TError> > > TryReduceUntilAsync <T, TError>(this IEnumerable <Result <T, TError> > values,
                                                                                    Func <T, T, Task <T> > aggrFunc)
 => values.ThrowIfDefault(nameof(values)).TryReduceUntilAsync(
     (acc, val) => AggrHelper.FuncUntilAsync(acc, val, aggrFunc));
Пример #4
0
 public static Task <Option <Result <T, TError> > > TryReduceAsync <T, TError>(this IEnumerable <Result <T, TError> > values,
                                                                               Func <T, T, Task <T> > aggrFunc) where TError : IPlus <TError, TError>
 => values.ThrowIfDefault(nameof(values)).TryReduceAsync(
     (acc, value) => AggrHelper.FuncAsync(acc, value, aggrFunc, PlusHelper.Plus));
Пример #5
0
 //Reduce on Result<T, TError>
 public static Task <Result <T, TError> > ReduceAsync <T, TError>(this IEnumerable <Result <T, TError> > values,
                                                                  Func <TError, TError, TError> mergeFunc, Func <T, T, Task <T> > aggrFunc)
 => values.ThrowIfDefault(nameof(values)).ReduceAsync(
     (acc, value) => AggrHelper.FuncAsync(acc, value, aggrFunc, mergeFunc));
Пример #6
0
 public static Task <Result <TResult, TError> > FoldUntilAsync <TResult, T, TError>(this IEnumerable <Result <T, TError> > values,
                                                                                    Result <TResult, TError> seed, Func <TResult, T, Task <TResult> > aggrFunc)
 => values.ThrowIfDefault(nameof(values)).FoldUntilAsync(seed,
                                                         (acc, value) => AggrHelper.FuncUntilAsync(acc, value, aggrFunc));
Пример #7
0
 public static async Task <Result <TResult> > FoldUntilAsync <TResult, T>(this IEnumerable <Result <T> > values,
                                                                          Result <TResult> seed, Func <TResult, T, Task <TResult> > aggrFunc) =>
 await values.FoldUntilAsync(seed,
                             (acc, value) => AggrHelper.FuncUntilAsync(acc, value, aggrFunc))
 .ConfigureAwait(false);