public static IFlowState <TResult> Select <TSource, TResult>(this IFlowState <TSource> state, Func <TSource, TResult> valueSelector, Func <Exception, TResult> errorSelector) { return(state.SelectMany(t => new Value <TResult>(valueSelector(t)), e => new Value <TResult>(errorSelector(e)))); }
public static IFlowState <TResult> Select <TSource, TResult>(this IFlowState <TSource> state, Func <TSource, TResult> selector) { return(state.SelectMany(t => new Value <TResult>(selector(t)))); }
public static IFlowState <TResult> SelectMany <TSource, TResult>(this IFlowState <TSource> state, Func <TSource, IFlowState <TResult> > selector) { return(state.SelectMany(selector, e => new Error <TResult>(e))); }
public static IFlowState <TResult> SelectMany <TSource, TFlow, TResult>(this IFlowState <TSource> source, Func <TSource, IFlowState <TFlow> > flowSelector, Func <TSource, TFlow, TResult> resultSelector) { return(source.SelectMany(s => flowSelector(s).Select(t => resultSelector(s, t)))); }
public static IFlowState <T> Flatten <T>(this IFlowState <IFlowState <T> > state) { return(state.SelectMany(t => t)); }