foop
Version:
interfaces that describe their intentions.
32 lines (30 loc) • 2.92 kB
JavaScript
var slice = require('../../native/arraySlice')
var curry = require('../../fp/curry')
/**
* Returns a copy of the list, sorted according to the comparator function,
* which should accept two values at a time and return a negative number if the
* first value is smaller, a positive number if it's larger, and zero if they
* are equal. Please note that this is a **copy** of the list. It does not
* modify the original.
* @since 5.0.0-beta.5
* @memberOf loop
*
* @param {Function} comparator A sorting function :: a -> b -> Int
* @param {Array} list The list to sort
* @return {Array} a new array with its elements sorted by the comparator function.
*
* @func
* @fork v0.1.0
* @category List
* @sig (a,a -> Number) -> [a] -> [a]
*
* @example
*
* var diff = function(a, b) { return a - b; }
* sort(diff, [4,2,7,5]); //=> [2, 4, 5, 7]
*
*/
module.exports = curry(2, function sort(comparator, list) {
return slice.call(list, 0).sort(comparator)
})
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic29ydC5qcyIsInNvdXJjZXMiOlsic29ydC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBzbGljZSA9IHJlcXVpcmUoJy4uLy4uL25hdGl2ZS9hcnJheVNsaWNlJylcbmNvbnN0IGN1cnJ5ID0gcmVxdWlyZSgnLi4vLi4vZnAvY3VycnknKVxuXG4vKipcbiAqIFJldHVybnMgYSBjb3B5IG9mIHRoZSBsaXN0LCBzb3J0ZWQgYWNjb3JkaW5nIHRvIHRoZSBjb21wYXJhdG9yIGZ1bmN0aW9uLFxuICogd2hpY2ggc2hvdWxkIGFjY2VwdCB0d28gdmFsdWVzIGF0IGEgdGltZSBhbmQgcmV0dXJuIGEgbmVnYXRpdmUgbnVtYmVyIGlmIHRoZVxuICogZmlyc3QgdmFsdWUgaXMgc21hbGxlciwgYSBwb3NpdGl2ZSBudW1iZXIgaWYgaXQncyBsYXJnZXIsIGFuZCB6ZXJvIGlmIHRoZXlcbiAqIGFyZSBlcXVhbC4gUGxlYXNlIG5vdGUgdGhhdCB0aGlzIGlzIGEgKipjb3B5Kiogb2YgdGhlIGxpc3QuIEl0IGRvZXMgbm90XG4gKiBtb2RpZnkgdGhlIG9yaWdpbmFsLlxuICogQHNpbmNlIDUuMC4wLWJldGEuNVxuICogQG1lbWJlck9mIGxvb3BcbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBjb21wYXJhdG9yIEEgc29ydGluZyBmdW5jdGlvbiA6OiBhIC0+IGIgLT4gSW50XG4gKiBAcGFyYW0ge0FycmF5fSBsaXN0IFRoZSBsaXN0IHRvIHNvcnRcbiAqIEByZXR1cm4ge0FycmF5fSBhIG5ldyBhcnJheSB3aXRoIGl0cyBlbGVtZW50cyBzb3J0ZWQgYnkgdGhlIGNvbXBhcmF0b3IgZnVuY3Rpb24uXG4gKlxuICogQGZ1bmNcbiAqIEBmb3JrIHYwLjEuMFxuICogQGNhdGVnb3J5IExpc3RcbiAqIEBzaWcgKGEsYSAtPiBOdW1iZXIpIC0+IFthXSAtPiBbYV1cbiAqXG4gKiBAZXhhbXBsZVxuICpcbiAqICAgICAgdmFyIGRpZmYgPSBmdW5jdGlvbihhLCBiKSB7IHJldHVybiBhIC0gYjsgfVxuICogICAgICBzb3J0KGRpZmYsIFs0LDIsNyw1XSk7IC8vPT4gWzIsIDQsIDUsIDddXG4gKlxuICovXG5tb2R1bGUuZXhwb3J0cyA9IGN1cnJ5KDIsIGZ1bmN0aW9uIHNvcnQoY29tcGFyYXRvciwgbGlzdCkge1xuICByZXR1cm4gc2xpY2UuY2FsbChsaXN0LCAwKS5zb3J0KGNvbXBhcmF0b3IpXG59KVxuIl0sIm5hbWVzIjpbImNvbnN0Il0sIm1hcHBpbmdzIjoiQUFBQUEsR0FBSyxDQUFDLEtBQUssR0FBRyxPQUFPLENBQUMseUJBQXlCLENBQUM7QUFDaERBLEdBQUssQ0FBQyxLQUFLLEdBQUcsT0FBTyxDQUFDLGdCQUFnQixDQUFDOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQTBCdkMsTUFBTSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxFQUFFLFNBQVMsSUFBSSxDQUFDLFVBQVUsRUFBRSxJQUFJLEVBQUU7RUFDeEQsT0FBTyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDO0NBQzVDLENBQUM7In0=