package com.codepoetics.octarine.functional.functions; import java.util.function.Function; public interface F1<A, R> extends Function<A, R> { static <A, R> F1<A, R> of(Function<? super A, ? extends R> f) { return f::apply; } static <A, R> F1<A, R> of(Unsafe<? super A, ? extends R> f) { return f::apply; } default F0<R> curry(A a) { return () -> apply(a); } default F0<R> withParams(A a) { return curry(a); } static interface Unsafe<A, R> extends F1<A, R> { default R apply(A a) { try { return applyUnsafe(a); } catch (Exception e) { throw new RuntimeException(e); } } R applyUnsafe(A a) throws Exception; } }