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));