function Range(const Start, Stop, Step: integer): Enumerable; begin result := YieldingEnumerble.Create( procedure(const Yield: YieldProc) var i: integer; begin i := Start; while (i < Stop) do begin Yield(i); i := i + Step; end; end ); end;