UNPKG

bingo-functional-js

Version:

A port of the PHP bingo-functional library

30 lines (24 loc) 655 B
/** * _partial * internal partial application function on which left and right partial application are based * * _partial :: (a -> b -> c) -> [a, b] -> Bool -> (a) b * @param {function} func * @param {*} args * @param {boolean} left * @returns {function} */ const _partial = (func, args, left = true) => { const argCount = func.length const acc = (...inner) => (...innerMost) => { const final = left ? inner.concat(innerMost) : inner.reverse().concat(innerMost.reverse()) if (argCount <= final.length) { return func(...final) } return acc(...final) } return acc(...args) } module.exports = _partial