foop
Version:
interfaces that describe their intentions.
40 lines (38 loc) • 2.83 kB
JavaScript
var curry = require('./curry')
var always = require('./always')
var times = require('./times')
/**
* Returns a fixed list of size `n` containing a specified identical value.
* @since 5.0.0-beta.7
* @memberOf fp
*
* @param {*} value The value to repeat.
* @param {Number} n The desired size of the output list.
* @return {Array} A new array containing `n` `value`s.
*
* @TODO what about string.repeat?!
*
* @func
* @fork v0.1.1
* @category List
* @sig a -> n -> [a]
*
* @see fp/times
*
* @symb repeat(a, 0) = []
* @symb repeat(a, 1) = [a]
* @symb repeat(a, 2) = [a, a]
*
* @example
*
* repeat('hi', 5); //=> ['hi', 'hi', 'hi', 'hi', 'hi']
*
* var obj = {};
* var repeatedObjs = repeat(obj, 5); //=> [{}, {}, {}, {}, {}]
* repeatedObjs[0] === repeatedObjs[1]; //=> true
*
*/
module.exports = curry(2, function repeat(value, n) {
return times(n, always(value))
})
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVwZWF0LmpzIiwic291cmNlcyI6WyJyZXBlYXQuanMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgY3VycnkgPSByZXF1aXJlKCcuL2N1cnJ5JylcbmNvbnN0IGFsd2F5cyA9IHJlcXVpcmUoJy4vYWx3YXlzJylcbmNvbnN0IHRpbWVzID0gcmVxdWlyZSgnLi90aW1lcycpXG5cbi8qKlxuICogUmV0dXJucyBhIGZpeGVkIGxpc3Qgb2Ygc2l6ZSBgbmAgY29udGFpbmluZyBhIHNwZWNpZmllZCBpZGVudGljYWwgdmFsdWUuXG4gKiBAc2luY2UgNS4wLjAtYmV0YS43XG4gKiBAbWVtYmVyT2YgZnBcbiAqXG4gKiBAcGFyYW0geyp9IHZhbHVlIFRoZSB2YWx1ZSB0byByZXBlYXQuXG4gKiBAcGFyYW0ge051bWJlcn0gbiBUaGUgZGVzaXJlZCBzaXplIG9mIHRoZSBvdXRwdXQgbGlzdC5cbiAqIEByZXR1cm4ge0FycmF5fSBBIG5ldyBhcnJheSBjb250YWluaW5nIGBuYCBgdmFsdWVgcy5cbiAqXG4gKiBAVE9ETyB3aGF0IGFib3V0IHN0cmluZy5yZXBlYXQ/IVxuICpcbiAqIEBmdW5jXG4gKiBAZm9yayB2MC4xLjFcbiAqIEBjYXRlZ29yeSBMaXN0XG4gKiBAc2lnIGEgLT4gbiAtPiBbYV1cbiAqXG4gKiBAc2VlIGZwL3RpbWVzXG4gKlxuICogQHN5bWIgcmVwZWF0KGEsIDApID0gW11cbiAqIEBzeW1iIHJlcGVhdChhLCAxKSA9IFthXVxuICogQHN5bWIgcmVwZWF0KGEsIDIpID0gW2EsIGFdXG4gKlxuICogQGV4YW1wbGVcbiAqXG4gKiAgICAgIHJlcGVhdCgnaGknLCA1KTsgLy89PiBbJ2hpJywgJ2hpJywgJ2hpJywgJ2hpJywgJ2hpJ11cbiAqXG4gKiAgICAgIHZhciBvYmogPSB7fTtcbiAqICAgICAgdmFyIHJlcGVhdGVkT2JqcyA9IHJlcGVhdChvYmosIDUpOyAvLz0+IFt7fSwge30sIHt9LCB7fSwge31dXG4gKiAgICAgIHJlcGVhdGVkT2Jqc1swXSA9PT0gcmVwZWF0ZWRPYmpzWzFdOyAvLz0+IHRydWVcbiAqXG4gKi9cbm1vZHVsZS5leHBvcnRzID0gY3VycnkoMiwgZnVuY3Rpb24gcmVwZWF0KHZhbHVlLCBuKSB7XG4gIHJldHVybiB0aW1lcyhuLCBhbHdheXModmFsdWUpKVxufSlcbiJdLCJuYW1lcyI6WyJjb25zdCJdLCJtYXBwaW5ncyI6IkFBQUFBLEdBQUssQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLFNBQVMsQ0FBQztBQUNoQ0EsR0FBSyxDQUFDLE1BQU0sR0FBRyxPQUFPLENBQUMsVUFBVSxDQUFDO0FBQ2xDQSxHQUFLLENBQUMsS0FBSyxHQUFHLE9BQU8sQ0FBQyxTQUFTLENBQUM7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQWlDaEMsTUFBTSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxFQUFFLFNBQVMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLEVBQUU7RUFDbEQsT0FBTyxLQUFLLENBQUMsQ0FBQyxFQUFFLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztDQUMvQixDQUFDOyJ9