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 <R> Apply <T, R>(this Exceptional <Func <T, R> > AF, Exceptional <T> ET) => AF.Match(err => err, f => ET.Map(f));