public static Option <TSource> Where <TSource>(this Option <TSource> source, Func <TSource, bool> predicate) { if (predicate == null) { throw new ArgumentNullException("predicate"); } return(SelectMany(source, x => predicate(x) ? Option.GetSome(x) : Option.GetNone <TSource>(), (x, y) => y)); }
public static Option <T> AsOption <T>(this T value) { if (ReferenceEquals(null, value)) { return(Option.GetNone <T>()); } return(Option.GetSome(value)); }
public Option <TResult> Bind <TResult>(Func <T, Option <TResult> > func) { if (func == null) { throw new ArgumentNullException("func"); } if (IsNone) { return(Option.GetNone <TResult>()); } return(func(_value)); }
public Option <TResult> Transform <TResult>(Func <T, TResult> func) { if (func == null) { throw new ArgumentNullException("func"); } if (_isSome) { return(Option.GetSome(func(_value))); } else { return(Option.GetNone <TResult>()); } }