33import com .jnape .palatable .lambda .adt .Maybe ;
44import com .jnape .palatable .lambda .functions .Fn1 ;
55import com .jnape .palatable .lambda .functions .specialized .Pure ;
6+ import com .jnape .palatable .lambda .functor .Profunctor ;
67import com .jnape .palatable .lambda .functor .builtin .Const ;
78import com .jnape .palatable .lambda .optics .Optic ;
89import com .jnape .palatable .lambda .optics .ProtoOptic ;
1920 * @param <A> the result to {@link Maybe maybe} read out
2021 * @param <B> used for unification of the {@link Optic optic's} unused morphism
2122 */
22- public final class Pre <S , T , A , B > implements Fn1 <Optic <? super Fn1 <?, ?>, ? super Const <Maybe <A >, ?>, S , T , A , B >,
23- Optic <Fn1 <?, ?>, Const <Maybe <A >, ?>, S , T , Maybe <A >, B >> {
23+ public final class Pre <P extends Profunctor <?, ?, ? extends P >, S , T , A , B > implements
24+ Fn1 <Optic <P , ? super Const <Maybe <A >, ?>, S , T , A , B >,
25+ Optic <P , Const <Maybe <A >, ?>, S , T , Maybe <A >, B >> {
2426
25- private static final Pre <?, ?, ?, ?> INSTANCE = new Pre <>();
27+ private static final Pre <?, ?, ?, ?, ? > INSTANCE = new Pre <>();
2628
2729 private Pre () {
2830 }
2931
3032 @ Override
31- public Optic <Fn1 <?, ?> , Const <Maybe <A >, ?>, S , T , Maybe <A >, B > checkedApply (
32- Optic <? super Fn1 <?, ?> , ? super Const <Maybe <A >, ?>, S , T , A , B > optic ) {
33- Optic <? super Fn1 <?, ?> , ? super Const <Maybe <A >, ?>, S , T , Maybe <A >, B > mappedOptic = optic .mapA (Maybe ::just );
33+ public Optic <P , Const <Maybe <A >, ?>, S , T , Maybe <A >, B > checkedApply (
34+ Optic <P , ? super Const <Maybe <A >, ?>, S , T , A , B > optic ) {
35+ Optic <P , ? super Const <Maybe <A >, ?>, S , T , Maybe <A >, B > mappedOptic = optic .mapA (Maybe ::just );
3436 return reframe (mappedOptic );
3537 }
3638
3739 @ SuppressWarnings ("unchecked" )
38- public static <S , T , A , B > Pre <S , T , A , B > pre () {
39- return (Pre <S , T , A , B >) INSTANCE ;
40+ public static <P extends Profunctor <?, ?, ? extends P >, S , T , A , B > Pre <P , S , T , A , B > pre () {
41+ return (Pre <P , S , T , A , B >) INSTANCE ;
4042 }
4143
4244 @ SuppressWarnings ("overloads" )
43- public static <S , T , A , B > Optic < Fn1 < ?, ?>, Const < Maybe < A >, ? >, S , T , Maybe < A > , B > pre (
44- Optic <? super Fn1 <?, ?> , ? super Const <Maybe <A >, ?>, S , T , A , B > optic ) {
45- return Pre .<S , T , A , B >pre ().apply (optic );
45+ public static <P extends Profunctor < ?, ?, ? extends P >, S , T , A , B >
46+ Optic < P , Const < Maybe < A >, ?>, S , T , Maybe < A >, B > pre ( Optic < P , ? super Const <Maybe <A >, ?>, S , T , A , B > optic ) {
47+ return Pre .<P , S , T , A , B >pre ().apply (optic );
4648 }
4749
4850 @ SuppressWarnings ("overloads" )
49- public static <S , T , A , B > Optic <Fn1 <?, ?>, Const <Maybe <A >, ?>, S , T , Maybe <A >, B > pre (
50- ProtoOptic <? super Fn1 <?, ?>, S , T , A , B > protoOptic ) {
51- Optic <? super Fn1 <?, ?>, Const <Maybe <A >, ?>, S , T , A , B > optic = protoOptic
52- .toOptic (new Pure <Const <Maybe <A >, ?>>() {
53- @ Override
54- public <X > Const <Maybe <A >, X > checkedApply (X x ) {
55- return new Const <>(nothing ());
56- }
57- });
58- return pre (optic );
51+ public static <P extends Profunctor <?, ?, ? extends P >, S , T , A , B >
52+ Optic <P , Const <Maybe <A >, ?>, S , T , Maybe <A >, B > pre (ProtoOptic <P , S , T , A , B > protoOptic ) {
53+ return pre (protoOptic .toOptic (new Pure <Const <Maybe <A >, ?>>() {
54+ @ Override
55+ public <X > Const <Maybe <A >, X > checkedApply (X x ) {
56+ return new Const <>(nothing ());
57+ }
58+ }));
5959 }
6060}
0 commit comments