plura
Version:
Super simple functional programming library
27 lines (24 loc) • 563 B
JavaScript
const curry = require('./curry')
const map = require('./map')
const reduce = require('./reduce')
/**
* Simple ap
* @param {Array} fns - array of functions
* @param {Array} values - array of values
* @return {Array} _ - Array of values applyed with fns
* @example
*
* const addTwo = a => a + 2
* const minusOne = a => a - 1
* const result = ap([addTwo, minusOne], [1, 2, 3]) // >> [3, 4, 5, 0, 1, 2]
*/
const ap = curry((fns, values) =>
reduce((result, f) =>
result.concat(
map(f, values)
),
[],
fns
)
)
module.exports = ap