Реализовано несколько вспомогательных функций для работы с последовательностями, подобных тем, что есть в языке Python.
А именно Range, Zip и Group. Важно то, что все эти функции не создают новых контейнеров, векторов и прочего. Все реализуется посредством итераторов, т.е. Range(100500) не создает вектор из кучи элементов, а возвращает некоторую сущность, по которой можно проитерироваться (как в Python3).
Функция Range(from, to, step) должна порождать последовательность from, from + step, ..., from + k * step, где k --- такое последнее, что from + k * step < to. Реализованы также сокращенные формы Range с 1 и 2 аргументами (см. тесты).
Функция Zip принимает 2 последовательности (у каждой из которых есть begin и end) и порождает последовательность соответствующих пар. При этом функция обрезает итоговую последовательность до наименьшей.
Функция Group возвращает последовательность из итераторов на идущие подряд подпоследовательности из равных элементов (см. тесты). Для сравнения используется только оператор ==.