Composizioni di molte funzioni
This commit is contained in:
@@ -2,10 +2,13 @@ package org.gym.fp.fpjava.demo;
|
|||||||
|
|
||||||
import lombok.AccessLevel;
|
import lombok.AccessLevel;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
|
import org.gym.fp.fpjava.type.Function;
|
||||||
import org.gym.fp.fpjava.type.TailCall;
|
import org.gym.fp.fpjava.type.TailCall;
|
||||||
|
|
||||||
import java.math.BigInteger;
|
import java.math.BigInteger;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import static org.gym.fp.fpjava.type.CollectionUtilities.*;
|
||||||
import static org.gym.fp.fpjava.type.TailCall.ret;
|
import static org.gym.fp.fpjava.type.TailCall.ret;
|
||||||
import static org.gym.fp.fpjava.type.TailCall.suspend;
|
import static org.gym.fp.fpjava.type.TailCall.suspend;
|
||||||
|
|
||||||
@@ -15,6 +18,9 @@ public class RecursionDemo {
|
|||||||
public static void run() {
|
public static void run() {
|
||||||
System.out.println(add(10, 1000));
|
System.out.println(add(10, 1000));
|
||||||
System.out.print(fibonacci(10000));
|
System.out.print(fibonacci(10000));
|
||||||
|
|
||||||
|
Function<Integer, Integer> add = y -> y + 1;
|
||||||
|
System.out.println(composeAll(map(range(0, 10_000), x -> add)).apply(0));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static int add(int x, int y) {
|
public static int add(int x, int y) {
|
||||||
@@ -42,4 +48,8 @@ public class RecursionDemo {
|
|||||||
}
|
}
|
||||||
return (new Aux()).fib(BigInteger.ONE, BigInteger.ZERO, BigInteger.valueOf(number)).eval();
|
return (new Aux()).fib(BigInteger.ONE, BigInteger.ZERO, BigInteger.valueOf(number)).eval();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static <T> Function<T, T> composeAll(List<Function<T, T>> functions) {
|
||||||
|
return x -> foldRight(functions, x, f -> f::apply);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user