File tree Expand file tree Collapse file tree
main/java/com/jnape/palatable/lambda/monad/transformer/builtin
test/java/com/jnape/palatable/lambda/monad/transformer/builtin Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -44,6 +44,17 @@ public <MMA extends MonadRec<Maybe<A>, M>> MMA runMaybeT() {
4444 return mma .coerce ();
4545 }
4646
47+ /**
48+ * If the embedded value is present and satisfies <code>predicate</code>
49+ * then return <code>just</code> the embedded value
50+ *
51+ * @param predicate the predicate to apply to the embedded value
52+ * @return maybe the satisfied value embedded under M
53+ */
54+ public MaybeT <M , A > filter (Fn1 <? super A , ? extends Boolean > predicate ) {
55+ return maybeT (mma .fmap (ma -> ma .filter (predicate )));
56+ }
57+
4758 /**
4859 * {@inheritDoc}
4960 */
Original file line number Diff line number Diff line change 2222import static com .jnape .palatable .lambda .adt .Either .right ;
2323import static com .jnape .palatable .lambda .adt .Maybe .just ;
2424import static com .jnape .palatable .lambda .adt .Maybe .nothing ;
25+ import static com .jnape .palatable .lambda .functions .builtin .fn2 .GT .gt ;
26+ import static com .jnape .palatable .lambda .functions .builtin .fn2 .LT .lt ;
2527import static com .jnape .palatable .lambda .functor .builtin .Identity .pureIdentity ;
2628import static com .jnape .palatable .lambda .functor .builtin .Lazy .lazy ;
2729import static com .jnape .palatable .lambda .io .IO .io ;
@@ -70,4 +72,11 @@ public void composedZip() {
7072 .unsafePerformAsyncIO (Executors .newFixedThreadPool (2 ))
7173 .join ();
7274 }
75+
76+ @ Test
77+ public void filter () {
78+ MaybeT <Identity <?>, Integer > maybeT = pureMaybeT (pureIdentity ()).apply (1 );
79+ assertEquals (maybeT (new Identity <>(just (1 ))), maybeT .filter (gt (0 )));
80+ assertEquals (maybeT (new Identity <>(nothing ())), maybeT .filter (lt (0 )));
81+ }
7382}
You can’t perform that action at this time.
0 commit comments