Пример #1
0
        internal static IGen <T> SelectError <T>(this IGen <T> gen, Func <IGenErrorData, IGenErrorData> errorSelector)
        {
            IGenIteration <T> SelectError(IGenError <T> error)
            {
                var selectedErrorData = errorSelector(error);

                return(GenIterationFactory.Error <T>(
                           error.ReplayParameters,
                           error.NextParameters,
                           selectedErrorData.GenName,
                           selectedErrorData.Message));
            }

            GenIterationTransformation <T, T> transformation = (iteration) =>
            {
                return(iteration.Match(
                           onError: error => SelectError(error),
                           onInstance: instance => instance,
                           onDiscard: discard => discard));
            };

            return(gen.TransformIterations(transformation));
        }
 public static IGen <U> TransformIterations <T, U>(
     this IGen <T> gen,
     GenIterationTransformation <T, U> transformation) =>
 gen.TransformStream(stream => stream.Select(transformation.Invoke));