Skip to content

Commit f0dfd2d

Browse files
committed
Re now returns an Optic that imposes no profunctor constraint
1 parent 2885fb9 commit f0dfd2d

1 file changed

Lines changed: 13 additions & 8 deletions

File tree

  • src/main/java/com/jnape/palatable/lambda/optics/functions

src/main/java/com/jnape/palatable/lambda/optics/functions/Re.java

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.jnape.palatable.lambda.optics.functions;
22

33
import com.jnape.palatable.lambda.functions.Fn1;
4+
import com.jnape.palatable.lambda.functor.Profunctor;
45
import com.jnape.palatable.lambda.functor.builtin.Const;
56
import com.jnape.palatable.lambda.functor.builtin.Identity;
67
import com.jnape.palatable.lambda.functor.builtin.Tagged;
@@ -18,30 +19,34 @@
1819
* @param <B> the value to read from
1920
*/
2021
public final class Re<S, T, A, B> implements
21-
Fn1<Optic<? super Tagged<?, ?>, ? super Identity<?>, S, T, A, B>, Optic<Fn1<?, ?>, Const<T, ?>, B, B, T, T>> {
22+
Fn1<Optic<? super Tagged<?, ?>, ? super Identity<?>, S, T, A, B>,
23+
Optic<Profunctor<?, ?, ?>, Const<T, ?>, B, B, T, T>> {
2224

2325
private static final Re<?, ?, ?, ?> INSTANCE = new Re<>();
2426

2527
private Re() {
2628
}
2729

2830
@Override
29-
public Optic<Fn1<?, ?>, Const<T, ?>, B, B, T, T> checkedApply(
31+
public Optic<Profunctor<?, ?, ?>, Const<T, ?>, B, B, T, T> checkedApply(
3032
Optic<? super Tagged<?, ?>, ? super Identity<?>, S, T, A, B> optic) {
31-
return Optic.<Fn1<?, ?>, Const<T, ?>, B, B, T, T,
33+
return Optic.<Profunctor<?, ?, ?>, Const<T, ?>, B, B, T, T,
3234
Const<T, T>, Const<T, B>,
33-
Fn1<T, Const<T, T>>,
34-
Fn1<B, Const<T, B>>>optic(pafb -> b -> new Const<>(optic.<Tagged<?, ?>, Identity<?>, Identity<B>,
35-
Identity<T>, Tagged<A, Identity<B>>,
36-
Tagged<S, Identity<T>>>apply(new Tagged<>(new Identity<>(b))).unTagged().runIdentity()));
35+
Profunctor<T, Const<T, T>, ? extends Profunctor<?, ?, ?>>,
36+
Profunctor<B, Const<T, B>, ? extends Profunctor<?, ?, ?>>>optic(
37+
pafb -> pafb.diMap(
38+
b -> optic.<Tagged<?, ?>, Identity<?>, Identity<B>, Identity<T>,
39+
Tagged<A, Identity<B>>, Tagged<S, Identity<T>>>apply(
40+
new Tagged<>(new Identity<>(b))).unTagged().runIdentity(),
41+
fb -> new Const<>(fb.runConst())));
3742
}
3843

3944
@SuppressWarnings("unchecked")
4045
public static <S, T, A, B> Re<S, T, A, B> re() {
4146
return (Re<S, T, A, B>) INSTANCE;
4247
}
4348

44-
public static <S, T, A, B> Optic<Fn1<?, ?>, Const<T, ?>, B, B, T, T> re(
49+
public static <S, T, A, B> Optic<Profunctor<?, ?, ?>, Const<T, ?>, B, B, T, T> re(
4550
Optic<? super Tagged<?, ?>, ? super Identity<?>, S, T, A, B> optic) {
4651
return Re.<S, T, A, B>re().apply(optic);
4752
}

0 commit comments

Comments
 (0)