package com.googlecode.totallylazy.functions; public interface Curried2<A, B, C> extends Function1<A, Function1<B, C>>, Function2<A, B, C> { @Override default Function1<B, C> call(final A a) throws Exception { return b -> call(a,b); } @Override default Curried2<B, A, C> flip() { return Callables.flip(this); } default <D, E> Curried3<A, B, D, E> then(final Function2<? super C, ? super D, ? extends E> callable) { return (a, b, d) -> callable.call(Curried2.this.call(a, b), d); } }