From Asbjørn, 8 Years ago, written in Delphi (Object Pascal).
  1. function Range(const Start, Stop, Step: integer): Enumerable<integer>;
  2. begin
  3.   result :=
  4.     YieldingEnumerble<integer>.Create(
  5.       procedure(const Yield: YieldProc<integer>)
  6.       var
  7.         i: integer;
  8.       begin
  9.         i := Start;
  10.         while (i < Stop) do
  11.         begin
  12.           Yield(i);
  13.  
  14.           i := i + Step;
  15.         end;
  16.       end
  17.     );
  18. end;