package church.lang; import java.util.function.Function; public class Interval { public final int min; public final int max; public Interval(int min, int max) { this.min = min; this.max = max; } public <U> U reduce(U identity, Function<U, Function<Integer, U>> accumulator) { U result = identity; for (int i = min; i < max; i++) { result = accumulator.apply(result).apply(i); } return result; } }