Skip to content

Commit

Permalink
Make FunctionN unchecked
Browse files Browse the repository at this point in the history
  • Loading branch information
making committed May 13, 2021
1 parent 1c88167 commit b9dcf9c
Show file tree
Hide file tree
Showing 20 changed files with 39 additions and 30 deletions.
2 changes: 1 addition & 1 deletion scripts/generate-applicative.sh
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ package am.ik.yavi.fn;
*/
public interface ${class}<$(echo $(for j in `seq 1 ${i}`;do echo -n "T${j}, ";done) | sed 's/,$//'), R> {
R apply($(echo $(for j in `seq 1 ${i}`;do echo -n "T${j} t${j}, ";done) | sed 's/,$//')) throws Exception;
R apply($(echo $(for j in `seq 1 ${i}`;do echo -n "T${j} t${j}, ";done) | sed 's/,$//'));
default $(echo $(for j in `seq 1 ${i}`;do echo -n "Function1<T${j}, ";done)) R$(echo $(for j in `seq 1 ${i}`;do echo -n ">";done)) curried() {
return $(echo $(for j in `seq 1 ${i}`;do echo -n "t${j} -> ";done)) this.apply($(echo $(for j in `seq 1 ${i}`;do echo -n "t${j}, ";done) | sed 's/,$//'));
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/am/ik/yavi/fn/Function1.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
*/
public interface Function1<T1, R> {

R apply(T1 t1) throws Exception;
R apply(T1 t1);

default Function1<T1, R> curried() {
return t1 -> this.apply(t1);
Expand Down
3 changes: 1 addition & 2 deletions src/main/java/am/ik/yavi/fn/Function10.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,7 @@
*/
public interface Function10<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, R> {

R apply(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9, T10 t10)
throws Exception;
R apply(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9, T10 t10);

default Function1<T1, Function1<T2, Function1<T3, Function1<T4, Function1<T5, Function1<T6, Function1<T7, Function1<T8, Function1<T9, Function1<T10, R>>>>>>>>>> curried() {
return t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> this.apply(t1,
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/am/ik/yavi/fn/Function11.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
public interface Function11<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, R> {

R apply(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9, T10 t10,
T11 t11) throws Exception;
T11 t11);

default Function1<T1, Function1<T2, Function1<T3, Function1<T4, Function1<T5, Function1<T6, Function1<T7, Function1<T8, Function1<T9, Function1<T10, Function1<T11, R>>>>>>>>>>> curried() {
return t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> this
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/am/ik/yavi/fn/Function12.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
public interface Function12<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, R> {

R apply(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9, T10 t10,
T11 t11, T12 t12) throws Exception;
T11 t11, T12 t12);

default Function1<T1, Function1<T2, Function1<T3, Function1<T4, Function1<T5, Function1<T6, Function1<T7, Function1<T8, Function1<T9, Function1<T10, Function1<T11, Function1<T12, R>>>>>>>>>>>> curried() {
return t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> this
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/am/ik/yavi/fn/Function13.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
public interface Function13<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, R> {

R apply(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9, T10 t10,
T11 t11, T12 t12, T13 t13) throws Exception;
T11 t11, T12 t12, T13 t13);

default Function1<T1, Function1<T2, Function1<T3, Function1<T4, Function1<T5, Function1<T6, Function1<T7, Function1<T8, Function1<T9, Function1<T10, Function1<T11, Function1<T12, Function1<T13, R>>>>>>>>>>>>> curried() {
return t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> this
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/am/ik/yavi/fn/Function14.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
public interface Function14<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, R> {

R apply(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9, T10 t10,
T11 t11, T12 t12, T13 t13, T14 t14) throws Exception;
T11 t11, T12 t12, T13 t13, T14 t14);

default Function1<T1, Function1<T2, Function1<T3, Function1<T4, Function1<T5, Function1<T6, Function1<T7, Function1<T8, Function1<T9, Function1<T10, Function1<T11, Function1<T12, Function1<T13, Function1<T14, R>>>>>>>>>>>>>> curried() {
return t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> this
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/am/ik/yavi/fn/Function15.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
public interface Function15<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, R> {

R apply(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9, T10 t10,
T11 t11, T12 t12, T13 t13, T14 t14, T15 t15) throws Exception;
T11 t11, T12 t12, T13 t13, T14 t14, T15 t15);

default Function1<T1, Function1<T2, Function1<T3, Function1<T4, Function1<T5, Function1<T6, Function1<T7, Function1<T8, Function1<T9, Function1<T10, Function1<T11, Function1<T12, Function1<T13, Function1<T14, Function1<T15, R>>>>>>>>>>>>>>> curried() {
return t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> this
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/am/ik/yavi/fn/Function16.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
public interface Function16<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, R> {

R apply(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9, T10 t10,
T11 t11, T12 t12, T13 t13, T14 t14, T15 t15, T16 t16) throws Exception;
T11 t11, T12 t12, T13 t13, T14 t14, T15 t15, T16 t16);

default Function1<T1, Function1<T2, Function1<T3, Function1<T4, Function1<T5, Function1<T6, Function1<T7, Function1<T8, Function1<T9, Function1<T10, Function1<T11, Function1<T12, Function1<T13, Function1<T14, Function1<T15, Function1<T16, R>>>>>>>>>>>>>>>> curried() {
return t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> t10 -> t11 -> t12 -> t13 -> t14 -> t15 -> t16 -> this
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/am/ik/yavi/fn/Function2.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
*/
public interface Function2<T1, T2, R> {

R apply(T1 t1, T2 t2) throws Exception;
R apply(T1 t1, T2 t2);

default Function1<T1, Function1<T2, R>> curried() {
return t1 -> t2 -> this.apply(t1, t2);
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/am/ik/yavi/fn/Function3.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
*/
public interface Function3<T1, T2, T3, R> {

R apply(T1 t1, T2 t2, T3 t3) throws Exception;
R apply(T1 t1, T2 t2, T3 t3);

default Function1<T1, Function1<T2, Function1<T3, R>>> curried() {
return t1 -> t2 -> t3 -> this.apply(t1, t2, t3);
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/am/ik/yavi/fn/Function4.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
*/
public interface Function4<T1, T2, T3, T4, R> {

R apply(T1 t1, T2 t2, T3 t3, T4 t4) throws Exception;
R apply(T1 t1, T2 t2, T3 t3, T4 t4);

default Function1<T1, Function1<T2, Function1<T3, Function1<T4, R>>>> curried() {
return t1 -> t2 -> t3 -> t4 -> this.apply(t1, t2, t3, t4);
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/am/ik/yavi/fn/Function5.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
*/
public interface Function5<T1, T2, T3, T4, T5, R> {

R apply(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5) throws Exception;
R apply(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5);

default Function1<T1, Function1<T2, Function1<T3, Function1<T4, Function1<T5, R>>>>> curried() {
return t1 -> t2 -> t3 -> t4 -> t5 -> this.apply(t1, t2, t3, t4, t5);
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/am/ik/yavi/fn/Function6.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
*/
public interface Function6<T1, T2, T3, T4, T5, T6, R> {

R apply(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6) throws Exception;
R apply(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6);

default Function1<T1, Function1<T2, Function1<T3, Function1<T4, Function1<T5, Function1<T6, R>>>>>> curried() {
return t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> this.apply(t1, t2, t3, t4, t5, t6);
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/am/ik/yavi/fn/Function7.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
*/
public interface Function7<T1, T2, T3, T4, T5, T6, T7, R> {

R apply(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7) throws Exception;
R apply(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7);

default Function1<T1, Function1<T2, Function1<T3, Function1<T4, Function1<T5, Function1<T6, Function1<T7, R>>>>>>> curried() {
return t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> this.apply(t1, t2, t3, t4, t5,
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/am/ik/yavi/fn/Function8.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
*/
public interface Function8<T1, T2, T3, T4, T5, T6, T7, T8, R> {

R apply(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8) throws Exception;
R apply(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8);

default Function1<T1, Function1<T2, Function1<T3, Function1<T4, Function1<T5, Function1<T6, Function1<T7, Function1<T8, R>>>>>>>> curried() {
return t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> this.apply(t1, t2, t3, t4,
Expand Down
3 changes: 1 addition & 2 deletions src/main/java/am/ik/yavi/fn/Function9.java
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,7 @@
*/
public interface Function9<T1, T2, T3, T4, T5, T6, T7, T8, T9, R> {

R apply(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9)
throws Exception;
R apply(T1 t1, T2 t2, T3 t3, T4 t4, T5 t5, T6 t6, T7 t7, T8 t8, T9 t9);

default Function1<T1, Function1<T2, Function1<T3, Function1<T4, Function1<T5, Function1<T6, Function1<T7, Function1<T8, Function1<T9, R>>>>>>>>> curried() {
return t1 -> t2 -> t3 -> t4 -> t5 -> t6 -> t7 -> t8 -> t9 -> this.apply(t1, t2,
Expand Down
9 changes: 2 additions & 7 deletions src/main/java/am/ik/yavi/fn/Validation.java
Original file line number Diff line number Diff line change
Expand Up @@ -94,13 +94,8 @@ default <U> Validation<List<E>, U> apply(
if (isValid()) {
if (validation.isValid()) {
final Function1<T, U> f = validation.value();
try {
final U u = f.apply(this.value());
return Validation.success(u);
}
catch (Exception e) {
throw new RuntimeException(e);
}
final U u = f.apply(this.value());
return Validation.success(u);
}
else {
final List<E> error = validation.error();
Expand Down
16 changes: 16 additions & 0 deletions src/test/java/am/ik/yavi/fn/Function2Test.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package am.ik.yavi.fn;

import org.junit.jupiter.api.Test;

import static org.assertj.core.api.Assertions.assertThat;

class Function2Test {

@Test
void curried() {
Function2<Integer, Integer, Integer> add = (x, y) -> x + y;
final Function1<Integer, Integer> add10 = add.curried().apply(10);
final Integer result = add10.apply(2);
assertThat(result).isEqualTo(12);
}
}
8 changes: 4 additions & 4 deletions src/test/java/am/ik/yavi/fn/ValidationTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -135,7 +135,7 @@ void compose_all_valid() {
.compose(v15).compose(v16)
.apply((s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15,
s16) -> String.join(", ", s1, s2, s3, s4, s5, s6, s7, s8, s9, s10,
s11, s12, s13, s14, s15, s16));
s11, s12, s13, s14, s15, s16));
assertThat(validation.isValid()).isTrue();
assertThat(validation.value()).isEqualTo(
"s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15, s16");
Expand Down Expand Up @@ -166,7 +166,7 @@ void compose_all_invalid() {
.compose(v15).compose(v16)
.apply((s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15,
s16) -> String.join(", ", s1, s2, s3, s4, s5, s6, s7, s8, s9, s10,
s11, s12, s13, s14, s15, s16));
s11, s12, s13, s14, s15, s16));

assertThat(validation.isValid()).isFalse();
assertThat(validation.error()).containsExactly("f1", "f2", "f3", "f4", "f5", "f6",
Expand Down Expand Up @@ -198,7 +198,7 @@ void compose_first_invalid() {
.compose(v15).compose(v16)
.apply((s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15,
s16) -> String.join(", ", s1, s2, s3, s4, s5, s6, s7, s8, s9, s10,
s11, s12, s13, s14, s15, s16));
s11, s12, s13, s14, s15, s16));

assertThat(validation.isValid()).isFalse();
assertThat(validation.error()).containsExactly("f1");
Expand Down Expand Up @@ -229,7 +229,7 @@ void compose_last_invalid() {
.compose(v15).compose(v16)
.apply((s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14, s15,
s16) -> String.join(", ", s1, s2, s3, s4, s5, s6, s7, s8, s9, s10,
s11, s12, s13, s14, s15, s16));
s11, s12, s13, s14, s15, s16));

assertThat(validation.isValid()).isFalse();
assertThat(validation.error()).containsExactly("f16");
Expand Down

0 comments on commit b9dcf9c

Please sign in to comment.