/** * Creates a function that negates the result of the predicate `func`. The * `func` predicate is invoked with the `this` binding and arguments of the * created function. * * @since 3.0.0 * @category Function * @param {Function} predicate The predicate to negate. * @returns {Function} Returns the new negated function. * @example * * function isEven(n) { * return n % 2 == 0 * } * * filter([1, 2, 3, 4, 5, 6], negate(isEven)) * // => [1, 3, 5] */ function negate(predicate) { if (typeof predicate !== 'function') { throw new TypeError('Expected a function') } return function(...args) { return !predicate.apply(this, args) } } export default negate