66import com .jnape .palatable .lambda .functions .Fn3 ;
77import com .jnape .palatable .lambda .functor .Bifunctor ;
88import com .jnape .palatable .lambda .functor .BoundedBifunctor ;
9+ import com .jnape .palatable .lambda .io .IO ;
910
1011/**
1112 * Given two {@link Effect}s, "peek" at the values contained inside a {@link Bifunctor} via
1617 * @param <FAB> the bifunctor type
1718 */
1819public final class Peek2 <A , B , FAB extends BoundedBifunctor <A , B , ? super A , ? super B , ?>> implements
19- Fn3 <Effect <? super A >, Effect <? super B >, FAB , FAB > {
20+ Fn3 <Fn1 <? super A , ? extends IO <?>>, Fn1 <? super B , ? extends IO <?> >, FAB , FAB > {
2021 private static final Peek2 <?, ?, ?> INSTANCE = new Peek2 <>();
2122
2223 private Peek2 () {
2324 }
2425
2526 @ Override
2627 @ SuppressWarnings ("unchecked" )
27- public FAB checkedApply (Effect <? super A > aConsumer , Effect <? super B > bConsumer , FAB fab ) {
28+ public FAB checkedApply (Fn1 <? super A , ? extends IO <?>> effectA , Fn1 <? super B , ? extends IO <?>> effectB , FAB fab ) {
2829 return (FAB ) fab .biMap (a -> {
29- aConsumer .apply (a ).unsafePerformIO ();
30+ effectA .apply (a ).unsafePerformIO ();
3031 return a ;
3132 }, b -> {
32- bConsumer .apply (b ).unsafePerformIO ();
33+ effectB .apply (b ).unsafePerformIO ();
3334 return b ;
3435 });
3536 }
@@ -39,21 +40,21 @@ public FAB checkedApply(Effect<? super A> aConsumer, Effect<? super B> bConsumer
3940 return (Peek2 <A , B , FAB >) INSTANCE ;
4041 }
4142
42- public static <A , B , FAB extends BoundedBifunctor <A , B , ? super A , ? super B , ?>> Fn2 < Effect <? super B >, FAB , FAB >
43- peek2 (Effect <? super A > aConsumer ) {
44- return Peek2 .<A , B , FAB >peek2 ().apply (aConsumer );
43+ public static <A , B , FAB extends BoundedBifunctor <A , B , ? super A , ? super B , ?>>
44+ Fn2 < Fn1 <? super B , ? extends IO <?>>, FAB , FAB > peek2 (Fn1 <? super A , ? extends IO <?>> effectA ) {
45+ return Peek2 .<A , B , FAB >peek2 ().apply (effectA );
4546 }
4647
4748 public static <A , B , FAB extends BoundedBifunctor <A , B , ? super A , ? super B , ?>> Fn1 <FAB , FAB > peek2 (
48- Effect <? super A > aConsumer ,
49- Effect <? super B > bConsumer ) {
50- return Peek2 .<A , B , FAB >peek2 (aConsumer ).apply (bConsumer );
49+ Fn1 <? super A , ? extends IO <?>> effectA ,
50+ Fn1 <? super B , ? extends IO <?>> effectB ) {
51+ return Peek2 .<A , B , FAB >peek2 (effectA ).apply (effectB );
5152 }
5253
5354 public static <A , B , FAB extends BoundedBifunctor <A , B , ? super A , ? super B , ?>> FAB peek2 (
54- Effect <? super A > aConsumer ,
55- Effect <? super B > bConsumer ,
55+ Fn1 <? super A , ? extends IO <?>> effectA ,
56+ Fn1 <? super B , ? extends IO <?>> effectB ,
5657 FAB fab ) {
57- return Peek2 .<A , B , FAB >peek2 (aConsumer , bConsumer ).apply (fab );
58+ return Peek2 .<A , B , FAB >peek2 (effectA , effectB ).apply (fab );
5859 }
5960}
0 commit comments