Exemplo n.º 1
0
        SelectMany <TEnv, TFirst, TSecond, TResult>(
            this IReader <TEnv, TFirst> reader,
            Func <TFirst, IReader <TEnv, TSecond> > secondSelector,
            Func <TFirst, TSecond, TResult> resultSelector)
        {
            if (reader == null)
            {
                throw new ArgumentNullException(nameof(reader));
            }
            if (secondSelector == null)
            {
                throw new ArgumentNullException(nameof(secondSelector));
            }
            if (resultSelector == null)
            {
                throw new ArgumentNullException(nameof(resultSelector));
            }

            return(reader.Bind(x => secondSelector(x).Map(y => resultSelector(x, y))));
        }