com.github.tonivade.purefun.CheckedFunction2 Maven / Gradle / Ivy
/*
* Copyright (c) 2018-2019, Antonio Gabriel Muñoz Conejo
* Distributed under the terms of the MIT License
*/
package com.github.tonivade.purefun;
@FunctionalInterface
public interface CheckedFunction2 extends Recoverable {
R apply(A a, B b) throws Throwable;
default CheckedFunction1> curried() {
return a -> b -> apply(a, b);
}
default CheckedFunction1, R> tupled() {
return tuple -> apply(tuple.get1(), tuple.get2());
}
default CheckedFunction2 andThen(CheckedFunction1 after) {
return (a, b) -> after.apply(apply(a, b));
}
default CheckedFunction1 compose(CheckedFunction1 beforeA, CheckedFunction1 beforeB) {
return value -> apply(beforeA.apply(value), beforeB.apply(value));
}
default Function2 unchecked() {
return recover(this::sneakyThrow);
}
default Function2 recover(Function1 mapper) {
return (a, b) -> {
try {
return apply(a, b);
} catch(Throwable e) {
return mapper.apply(e);
}
};
}
static CheckedFunction2 of(CheckedFunction2 reference) {
return reference;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy