import { curry } from '@typed/lambda' /** * Inclusive range by 1 */ export const range: { (from: number, to: number): Iterable (from: number): (to: number) => Iterable } = curry((from: number, to: number) => __rangeBy(from, to, 1)) /** * Inclusive range by given increment */ export const rangeBy: { (from: number, to: number, by: number): Iterable (from: number, to: number): (by: number) => Iterable (from: number): { (to: number, by: number): Iterable (to: number): (by: number) => Iterable } } = curry(__rangeBy) function* __rangeBy(from: number, to: number, by: number): Iterable { while (from <= to) { yield from from += by } }