import java.util.function.Function;
public class ProgramClass {
// A higher‑order function is a function that does at least one of the following:
// 1. Takes another function as an argument
// 2. Returns a function as its result
// If it does either one, it qualifies.
// Higher-order function: takes a function as an argument
static int applyTwice(Function<Integer, Integer> fn, int x) {
return fn.apply(fn.apply(x));
}
// A simple function to pass in
static int add3(int n) {
return n + 3;
}
public static void main(String[] args) {
// Use the higher-order function
int result = applyTwice(ProgramClass::add3, 5); // 5 + 3 = 8 + 3 = 11
System.out.println(result);
}
}
/*
run:
11
*/