public static IDataflow <Either <TLeft, TRightOutput> > BindSafe <TLeft, TRightInput, TRightOutput>( this IDataflow <Either <TLeft, TRightInput> > source, Func <TRightInput, IDataflow <Either <TLeft, TRightOutput> > > bindFunc) { return(source.Bind(item => item.Match( right => bindFunc(right), left => source.Factory.Return(Left <TLeft, TRightOutput>(left))))); }
public static IDataflow <IList <T> > ToList <T>(this IDataflow <T> source) { return(source.Bind(item => source.Factory.ToList(item))); }
public static IDataflow <TOutput> Select <TInput, TOutput>(this IDataflow <TInput> source, Func <TInput, TOutput> selector) { return(source.Bind(item => source.Factory.Return(selector(item)))); }
public static IDataflow <IGroupedDataflow <TKey, TElement> > GroupBy <TElement, TKey>(this IDataflow <TElement> source, Func <TElement, TKey> keySelector) { return(source.Bind(item => source.Factory.GroupBy(item, keySelector))); }
public static IDataflow <IList <T> > Buffer <T>(this IDataflow <T> source, TimeSpan batchTimeout, int batchMaxSize) { return(source.Bind(item => source.Factory.Buffer(item, batchTimeout, batchMaxSize))); }
public static IDataflow <TOutput> SelectManyAsync <TInput, TOutput>(this IDataflow <TInput> source, Func <TInput, Task <IEnumerable <TOutput> > > selector) { return(source.Bind(item => source.Factory.ReturnManyAsync(selector(item)))); }
public static IDataflow <TOutput> SelectMany <TInput, TOutput>(this IDataflow <TInput> source, Func <TInput, IDataflow <TOutput> > selector) { return(source.Bind(selector)); }
public static IDataflow <TOutput> SelectMany <TInput, TOutput>(this IDataflow <TInput> source, Func <TInput, IEnumerable <TOutput> > selector) { return(source.Bind(input => source.Factory.ReturnMany(selector(input)))); }