public static Exceptional <RR> SelectMany <T, R, RR>(this Exceptional <T> @this, Func <T, Exceptional <R> > bind, Func <T, R, RR> proj) =>
 @this.Match(er => er,
             t => bind(t)
             .Match(e2 => e2,
                    r => Success(proj(t, r))
                    )
             );
 public static Exceptional <Func <T2, T3, T4, R> > Apply <T1, T2, T3, T4, R>(this Exceptional <Func <T1, T2, T3, T4, R> > AF, Exceptional <T1> ET1) =>
 Apply(AF.Map(F.CurryFirst), ET1);
 public static Exceptional <R> Select <T, R>(this Exceptional <T> @this, Func <T, Exceptional <R> > f) => @this.Bind(f);
 public static Exceptional <R> Apply <T, R>(this Exceptional <Func <T, R> > AF, Exceptional <T> ET) =>
 AF.Match(err => err,
          f => ET.Map(f));