Example #1
0
 // Monad
 public static IReservationsProgram <TResult> SelectMany <T, TResult>(
     this IReservationsProgram <T> source,
     Func <T, IReservationsProgram <TResult> > selector)
 {
     return(source.Accept(
                new SelectManyReservationsProgramVisitor <T, TResult>(
                    selector)));
 }
 public static IReservationsProgram <IMaybe <TResult> > SelectMany <T, U, TResult>(
     this IReservationsProgram <IMaybe <T> > source,
     Func <T, IReservationsProgram <IMaybe <U> > > k,
     Func <T, U, TResult> s)
 {
     return(source
            .SelectMany(x => k(x)
                        .SelectMany(y => new Pure <IMaybe <TResult> >(new Just <TResult>(s(x, y))))));
 }
 public static IReservationsProgram <IMaybe <TResult> > Select <T, TResult>(
     this IReservationsProgram <IMaybe <T> > source,
     Func <T, TResult> selector)
 {
     return(source.SelectMany(x => new Pure <IMaybe <TResult> >(new Just <TResult>(selector(x)))));
 }
 public static IReservationsProgram <IMaybe <TResult> > SelectMany <T, TResult>(
     this IReservationsProgram <IMaybe <T> > source,
     Func <T, IReservationsProgram <IMaybe <TResult> > > selector)
 {
     return(source.SelectMany(x => x.Accept(new SelectManyMaybeVisitor <T, TResult>(selector))));
 }