mirror of
https://gitflic.ru/project/openide/openide.git
synced 2025-12-19 10:20:56 +07:00
30 lines
1.1 KiB
Java
30 lines
1.1 KiB
Java
import java.util.function.Function;
|
|
|
|
abstract class Result<V> {
|
|
|
|
public abstract <U> Result<U> map(Function<V, U> f);
|
|
|
|
public abstract <U> Result<U> flatMap(Function<V, Result<U>> f);
|
|
|
|
|
|
<B, C> void simplified(final Result<Function<B, C>> r, final Result<B> b1) {
|
|
Result<C> rr = r.flatMap(b1::map);
|
|
}
|
|
|
|
|
|
public static <A, B, C> Function<Result<A>, Function<Result<B>, Result<C>>> lift2(final Function<A, Function<B, C>> f) {
|
|
return a -> b -> a.map(f).flatMap(b::map);
|
|
}
|
|
|
|
public static <A, B, C> Function<Result<A>, Function<Result<B>, Result<C>>> lift2a(final Function<A, Function<B, C>> f) {
|
|
return a -> b -> a.map(f).flatMap((Function<B, Result<C>>) (f1) -> b.map<error descr="'map(java.util.function.Function<B,U>)' in 'Result' cannot be applied to '(B)'">(f1)</error>);
|
|
}
|
|
|
|
public static <A, B, C> Function<Result<A>, Function<Result<B>, Result<C>>> lift2b(final Function<A, Function<B, C>> f) {
|
|
return a -> b -> a.map(f).flatMap(f1 -> b.map(f1));
|
|
}
|
|
|
|
public static <A, B, C> Function<Result<A>, Function<Result<B>, Result<C>>> lift2c(final Function<A, Function<B, C>> f) {
|
|
return a -> b -> a.map(f).flatMap((Function<B, C> f1) -> b.map(f1));
|
|
}
|
|
} |