Генерация бесконечных последовательностей

function Iterate<T>(Self: T; next: T -> T): sequence of T; extensionmethod;
        Возвращает бесконечную рекуррентную последовательность элементов, задаваемую начальным элементом и функцией next
function Iterate<T>(Self,second: T; next: (T,T) -> T): sequence of T; extensionmethod;
        Возвращает бесконечную рекуррентную последовательность элементов, задаваемую начальным элементом, следующим за ним элементом и функцией next
function Step(Self: integer): sequence of integer; extensionmethod;
        Возвращает бесконечную последовательность целых от текущего значения с шагом 1
function Step(Self: integer; step: integer): sequence of integer; extensionmethod;
        Возвращает бесконечную последовательность целых от текущего значения с шагом step
function Step(Self: real; step: real): sequence of real; extensionmethod;
        Возвращает бесконечную последовательность вещественных от текущего значения с шагом step
function Repeat<T>(Self: T): sequence of T; extensionmethod;
        Возвращает бесконечную последовательность элементов, совпадающих с данным
function Cycle<T>(Self: sequence of T): sequence of T; extensionmethod;
        Повторяет последовательность бесконечное число раз