File tree 2 files changed +20
-0
lines changed
main/java/com/jnape/palatable/lambda/monad/transformer/builtin
test/java/com/jnape/palatable/lambda/monad/transformer/builtin
2 files changed +20
-0
lines changed Original file line number Diff line number Diff line change @@ -44,6 +44,17 @@ public <MMA extends MonadRec<Maybe<A>, M>> MMA runMaybeT() {
44
44
return mma .coerce ();
45
45
}
46
46
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
+
47
58
/**
48
59
* {@inheritDoc}
49
60
*/
Original file line number Diff line number Diff line change 22
22
import static com .jnape .palatable .lambda .adt .Either .right ;
23
23
import static com .jnape .palatable .lambda .adt .Maybe .just ;
24
24
import 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 ;
25
27
import static com .jnape .palatable .lambda .functor .builtin .Identity .pureIdentity ;
26
28
import static com .jnape .palatable .lambda .functor .builtin .Lazy .lazy ;
27
29
import static com .jnape .palatable .lambda .io .IO .io ;
@@ -70,4 +72,11 @@ public void composedZip() {
70
72
.unsafePerformAsyncIO (Executors .newFixedThreadPool (2 ))
71
73
.join ();
72
74
}
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
+ }
73
82
}
You can’t perform that action at this time.
0 commit comments