import map from "../list/map";
import curry2 from "./curry2";
/**
* Takes a list of functions and a converging function.
* Returns a new function that takes a variable number of arguments,
* which will be applied to each of the branching functions.
* The results of the branching functions will be passed to the converging function.
*
* @param {function} convergingFn
* @param {function[]} branchingFns
* @returns {function}
*/
const converge = (convergingFn, branchingFns) => (...args) => {
const branchResults = map(
(branchingFn) => branchingFn(...args),
branchingFns
);
return convergingFn(...branchResults);
};
export default curry2(converge);