public static Try <TFailure, NewTSuccess> SelectMany <TFailure, TSuccess, R, NewTSuccess>( this Try <TFailure, TSuccess> @this, Func <TSuccess, Try <TFailure, R> > bind, Func <TSuccess, R, NewTSuccess> projector ) => @this.Match( failure: Try <TFailure, NewTSuccess> .Of, success: o => @this.Bind(bind).Match( failure: Try <TFailure, NewTSuccess> .Of, success: projected => Try <TFailure, NewTSuccess> .Of(projector(o, projected))) );
public static Try <R> bind <T, R>(Try <T> tryDel, Func <T, Try <R> > binder) => tryDel.Bind(binder);
public static Try <Func <B, C> > apply <A, B, C>(Try <Func <A, B, C> > fabc, Try <A> fa) => fabc.Bind(f => ApplTry <A, B, C> .Inst.Apply(MTry <Func <A, Func <B, C> > > .Inst.Return(curry(f)), fa));
public static Try <R> bind <T, R>(Try <T> self, Func <T, Try <R> > Succ, Func <Exception, Try <R> > Fail) => self.Bind(Succ, Fail);