UNPKG

@lou.codes/iterables

Version:
24 lines (23 loc) 747 B
import type { Awaitable, IsomorphicIterable, Unary } from "@lou.codes/types"; /** * Reducer function for iterables and asynchronous iterables. * * @category Asynchronous Reducers * @example * ```typescript * const sum = Accumulator<number>(item => total => total + item); * const sumFrom0 = sum(0); * * sumFrom0([1, 2, 3]); // 6 * ``` * @param reducer Reducer function. * @returns Curried function with `reducer` in context. */ export declare const reduce: <Item, Accumulator>( reducer: Unary<Item, Unary<Accumulator, Awaitable<Accumulator>>>, ) => ( initialValue: Accumulator, ) => <Iterable extends IsomorphicIterable<Item>>( iterable: Iterable, ) => Iterable extends AsyncIterable<unknown> ? Promise<Accumulator> : Accumulator;