public static IMaybe <T> FirstOrNone <T>(this IEnumerable <T> enumerable) { try { var first = enumerable.FirstOrDefault(); if (first.IsNull()) { return(MonadFunctions.none <T>()); } else if (first.Equals(default))
public IResult <IEnumerable <T> > IfAllSuccesses() { var list = new List <T>(); foreach (var result in enumerable) { handle(result); if (result.Out(out var value, out var original)) { list.Add(value); } else { return(original.ExceptionAs <IEnumerable <T> >()); } } return(MonadFunctions.success <IEnumerable <T> >(list)); }
public Matching(IMatched <T> matched) { this.matched = matched; action = MonadFunctions.none <Func <TResult> >(); }
public static IMaybe <T> SomeIfNotNull <T>(this T obj) => MonadFunctions.when(!obj.IsNull(), () => obj);