forked from Oregu/_.java
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path_.java
More file actions
35 lines (27 loc) · 1.03 KB
/
_.java
File metadata and controls
35 lines (27 loc) · 1.03 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import java.util.List;
import java.util.function.BiFunction;
import java.util.function.Function;
import java.util.function.IntBinaryOperator;
import java.util.function.IntFunction;
import java.util.function.IntUnaryOperator;
import static java.util.stream.Collectors.toList;
public interface _ {
static <T, U, R> Function<T, Function<U, R>> curry(BiFunction<T, U, R> bi) {
return t -> u -> bi.apply(t, u);
}
static IntFunction<IntUnaryOperator> curry(IntBinaryOperator bi) {
return l -> r -> bi.applyAsInt(l, r);
}
static <T, U, R> Function<U, R> partial(BiFunction<T, U, R> bi, T t) {
return u -> bi.apply(t, u);
}
static <T, U, V, R> Function<T, BiFunction<U, V, R>> curry(TernaryFunction<T, U, V, R> ternaryFunction) {
return t -> (u, v) -> ternaryFunction.apply(t, u, v);
}
static <T, U, V, R> BiFunction<U, V, R> partial(TernaryFunction<T, U, V, R> ternary, T t) {
return (u, v) -> ternary.apply(t, u, v);
}
static <CT extends List<T>, T, R> List<R> map(Function<T, R> f, CT coll) {
return coll.stream().map(f).collect(toList());
}
}