public static Optional <T> Filter <T>(this Optional <T> optional, Predicate <T> filter) { return(optional.FlatMap(t => filter(t) ? Optional.Some(t) : Optional.None <T>())); }
public static Optional <U> Map <T, U>(this Optional <T> optional, Func <T, U> mapper) { return(optional.FlatMap(t => Optional.Some(mapper(t)))); }