public static EitherMaybe <TLeft, TRight> Where <TLeft, TRight>(this EitherMaybe <TLeft, TRight> eitherT, Func <TRight, bool> predicate) { return(eitherT.Keep(predicate)); }
public static EitherMaybe <TLeft, TResult> SelectMany <TLeft, TRight, TResult>(this EitherMaybe <TLeft, TRight> eitherT, Func <TRight, EitherMaybe <TLeft, TResult> > f) { return(eitherT.Bind(f)); }
public static EitherMaybe <TLeft, TSelect> SelectMany <TLeft, TRight, TResult, TSelect>(this EitherMaybe <TLeft, TRight> eitherT, Func <TRight, EitherMaybe <TLeft, TResult> > f, Func <TRight, TResult, TSelect> selector) { return(eitherT.SelectMany(a => f(a).SelectMany(b => selector(a, b).ToMaybe().AsRight <TLeft, IMaybe <TSelect> >().ToEitherMaybe()))); }
public static EitherMaybe <TLeft, TResult> Select <TLeft, TRight, TResult>(this EitherMaybe <TLeft, TRight> eitherT, Func <TRight, TResult> f) { return(eitherT.FMap(f)); }