public static <T1, T2, T3, R> BiFunction<T2, T3, R> curry(TriFunction<T1, T2, T3, R> function, T1 first) {
        dbc.precondition(function != null, "cannot bind parameter of a null function");
        return (second, third) -> function.apply(first, second, third);
    }
public static < T1 , T2 , T3 , R > BiFunction < T2 , T3 , R > curry ( TriFunction < T1 , T2 , T3 , R > function , T1 first ) { dbc . precondition ( function != null , "cannot bind parameter of a null function" ) ; return ( second , third ) -> function . apply ( first , second , third ) ; }
Partial application of the first parameter to a ternary function.

@param <T1> the function first parameter type
@param <T2> the function second parameter type
@param <T3> the function third parameter type
@param <R> the function return type
@param function the function to be curried
@param first the value to be curried as first parameter
@return the curried binary function