Beispiel #1
0
        public static Aff <RT, Que <B> > TraverseParallel <RT, A, B>(this Que <Aff <RT, A> > ma, Func <A, B> f, int windowSize)
            where RT : struct, HasCancel <RT> =>
        AffMaybe <RT, Que <B> >(async env =>
        {
            var rs = await ma.AsEnumerable().Map(m => m.Run(env)).WindowMap(windowSize, fa => fa.Map(f));

            var(fails, succs) = rs.Partition();
            return(fails.Any()
                    ? FinFail <Que <B> >(fails.Head())
                    : FinSucc <Que <B> >(toQueue(succs)));
        });
Beispiel #2
0
        public static Aff <Que <B> > TraverseParallel <A, B>(this Que <Aff <A> > ma, Func <A, B> f, int windowSize) =>
        AffMaybe <Que <B> >(async() =>
        {
            var rs = await ma.AsEnumerable().Map(m => m.Run()).WindowMap(windowSize, fa => fa.Map(f)).ConfigureAwait(false);

            var(fails, succs) = rs.Partition();
            var fails1        = fails.Take(1).ToArray();

            return(fails1.Length == 1
                           ? FinFail <Que <B> >(fails1[0])
                           : FinSucc <Que <B> >(toQueue(succs)));
        });