Esempio n. 1
0
 /// <summary>
 /// Equivalent to <see cref="IMonad{TSource}"/>, but restricted to <see cref="FuncList{T}"/>. Offers LINQ query support with multiple <c>from</c>-clauses.
 /// </summary>
 /// <typeparam name="TSource">The type of the source's value.</typeparam>
 /// <typeparam name="TMiddle">The type of the selector's result.</typeparam>
 /// <typeparam name="TResult">The type of the result's value.</typeparam>
 /// <param name="source">The source.</param>
 /// <param name="f">The function to apply.</param>
 /// <param name="resultSelector">The result-selector.</param>
 public static FuncList <TResult> SelectMany <TSource, TMiddle, TResult>
     (this FuncList <TSource> source,
     Func <TSource, FuncList <TMiddle> > f,
     Func <TSource, TMiddle, TResult> resultSelector)
 => (FuncList <TResult>)source.Bind(x => (FuncList <TResult>)f(x).Map(y => resultSelector(x, y)));