Преимущество использования Curry в Java 8 состоит в том, что он позволяет вам определять функции высокого порядка, а затем передавать функцию первого порядка и аргументы функции в элегантной цепочке.
Вот пример для исчисления, производной функции.
- Позволяет определить приближение производной функции как (f (x + h) -f (x)) /ч .Это будет функция старшего порядка
- Давайте вычислим производную 2-х различных функций 1 / x и стандартизированного гауссова распределения
package math;
import static java.lang.Math.*;
import java.util.Optional;
import java.util.function.*;
public class UnivarDerivative
{
interface Approximation extends Function<Function<Double,Double>,
Function<Double,UnaryOperator<Double>>> {}
public static void main(String[] args)
{
Approximation derivative = f->h->x->(f.apply(x+h)-f.apply(x))/h;
double h=0.00001f;
Optional<Double> d1=Optional.of(derivative.apply(x->1/x).apply(h).apply(1.0));
Optional<Double> d2=Optional.of(
derivative.apply(x->(1/sqrt(2*PI))*exp(-0.5*pow(x,2))).apply(h).apply(-0.00001));
d1.ifPresent(System.out::println); //prints -0.9999900000988401
d2.ifPresent(System.out::println); //prints 1.994710003159016E-6
}
}