/** * joins to functions with matching types to a new function * converts T2 and T3 to X and T1 to R * @param outer * the last applied function * @param inner * the first applied function * @return a new function */ public static <R, T1, T2, T3, X> Function3<R, T1, T2, T3> join(Function2<R, ? super T1, ? super X> outer, Function2<X, ? super T2, ? super T3> inner) { return new JoinedFunction3<R, T1, T2, T3, X>(outer, inner); }
/** * joins to functions with matching types to a new function * converts T2 and T3 to X and T1 to R * @param outer * the last applied function * @param inner * the first applied function * @return a new function */ public static <R, T1, T2, T3, X> Function3<R, T1, T2, T3> join(Function2<R, ? super T1, ? super X> outer, Function2<X, ? super T2, ? super T3> inner) { return new JoinedFunction3<R, T1, T2, T3, X>(outer, inner); }
/** * joins to functions with matching types to a new function * converts T2 and T3 to X and T1 to R * @param outer * the last applied function * @param inner * the first applied function * @return a new function */ public static <R, T1, T2, T3, X> Function3<R, T1, T2, T3> join(Function2<R, T1, X> outer, Function2<X, T2, T3> inner) { return new JoinedFunction3<R, T1, T2, T3, X>(outer, inner); }