public static TMonadPlus MFilter <TMonadPlus, TA>(Func <TA, bool> p, IMonadPlus <TA> ma) where TMonadPlus : IMonadPlus <TA> { var monadPlusAdapter = MonadPlusAdapterRegistry.Get <TA>(typeof(TMonadPlus)); return((TMonadPlus)monadPlusAdapter.Bind( ma, a => p(a) ? monadPlusAdapter.Return(a) : monadPlusAdapter.MZero)); }
/// <inheritdoc /> public IMonadPlus <T> Mplus(IMonadPlus <T> that) { if (that == null || !(that is IEnumerable <T>)) { throw new InvalidCastException(); } var thatXs = (IEnumerable <T>)that; return(AppendRange(thatXs)); }
public abstract IMonadPlus <TA> MPlus(IMonadPlus <TA> xs, IMonadPlus <TA> ys);
public override IMonadPlus <TAOuter> MPlus(IMonadPlus <TAOuter> xs, IMonadPlus <TAOuter> ys) { return(((Maybe <TAOuter>)xs).Match(_ => xs, () => ys)); }