public static MonadZero <TSource> Where <TSource>( this MonadZero <TSource> @this, Func <TSource, bool> predicate) { Require.NotNull(@this, nameof(@this)); Require.NotNull(predicate, nameof(predicate)); return(@this.Bind(val => predicate(val) ? MonadZero <TSource> .η(val) : MonadZero <TSource> .Zero)); }
public static MonadZero <TResult> Select <TSource, TResult>( this MonadZero <TSource> @this, Func <TSource, TResult> selector) { Require.NotNull(@this, nameof(@this)); Require.NotNull(selector, nameof(selector)); return(@this.Bind(val => MonadZero <TResult> .η(selector(val)))); }