public static CanCauseError <T> ExceptionToError <T>(this Func <T> f) { try { var result = f(); return(CanCauseError <T> .NoError(result)); } catch (Exception e) { return(CanCauseError <T> .Error(e.Message)); } }
public static CanCauseError <T> Bind <T>(this IEnumerable <Func <T, CanCauseError <T> > > functions, T start) { CanCauseError <T> result = CanCauseError <T> .NoError(start); foreach (var func in functions) { result = func(result.Result); if (result.CausedError) { break; } } return(result); }