This question evaluates understanding of iterator design, lazy evaluation, composable higher-order combinators (map, filter, zip, take, drop, chain), edge-case handling for forward/backward and negative-step ranges, overflow-safe termination, peekable semantics, iterator invalidation rules, and writing boundary-focused unit tests.

Implement an iterator library: range(start, end, step=