A range function.
Ranges are immutable. Most operations operate in O(1) time and space.
deno add jsr:@alg/range
import { range } from "@alg/range";
const r = range(5); // or new Range(5);
console.log([...r]); // [0, 1, 2, 3, 4]
console.log(r.at(-2)); // 3
console.log(r[3]); // 3
console.log([...r.toReversed()]); // [4, 3, 2, 1, 0]
console.log([...r.slice(1, -1)]); // [1, 2, 3]
console.log([...range(1, 5)]); // [1, 2, 3, 4]
console.log([...range(1, 5, 2)]); // [1, 3]
console.log([...range(5, 1, -2)]); // [5, 3]