UNPKG

@lou.codes/iterables

Version:
22 lines (21 loc) 744 B
import { negate, then } from "@lou.codes/utils"; import { every } from "./every.js"; const thenNot = then(result => !result); /** * Evaluates items in an iterable or asynchronous iterable against a predicate * and returns `true` if any item evaluates to `true`. * * @category Asynchronous Reducers * @example * ```typescript * const someEven = some((number: number) => number % 2 === 0); * someEven([1, 2, 3, 4]); // true * someEven([1, 3, 5, 7]); // false * ``` * @param predicate Predicate function to evaluate each item. * @returns Curried function with `predicate` set in context. */ export const some = predicate => { const everyPredicate = every(negate(predicate)); return iterable => thenNot(everyPredicate(iterable)); };