locutus
Version:
Locutus other languages' standard libraries to JavaScript for fun and educational purposes
11 lines (10 loc) • 650 B
TypeScript
type ReduceWhileTag = 'cont' | 'halt';
type ReduceWhileTuple<TAccumulator> = [ReduceWhileTag, TAccumulator];
type ReduceWhileObject<TAccumulator> = {
tag: ReduceWhileTag;
value: TAccumulator;
};
type ReduceWhileStep<TAccumulator> = ReduceWhileTuple<TAccumulator> | ReduceWhileObject<TAccumulator>;
type ReduceWhileReducer<TAccumulator, TValue> = (accumulator: TAccumulator, value: TValue, index: number, array: TValue[]) => ReduceWhileStep<TAccumulator>;
export declare function reduce_while<TAccumulator, TValue>(values: TValue[] | unknown, initial: TAccumulator, reducer: ReduceWhileReducer<TAccumulator, TValue>): TAccumulator;
export {};