[fpc-devel] New feature discussion: for-in loop

Michael Van Canneyt michael at freepascal.org
Wed Oct 21 15:26:20 CEST 2009



On Wed, 21 Oct 2009, Alexander Klenin wrote:

> On Wed, Oct 21, 2009 at 23:15, Michael Van Canneyt
> <michael at freepascal.org> wrote:
>
>> This is all just nitpicking. Iterators as a language construct are a very ugly
>> hack to save some typing, no matter how you turn it. Nice maybe for
>> languages with dynamic typing and so on, but really not on it's place in Pascal.
>
> I beg to disagree.This is completely backwards -- like saying that
> "while" loop is an
> ugly hack to save some typing of "goto" operators.
> Iterators and foreach loops are very important tools of structured coding.
> The fact that "for..in" may be expressed in terms of lower-level primitives
> does not decrease its importance, just like existence of "goto" does
> not decrease
> the importance of "while".

Well, I think you can't compare the two cases.

I see little gain in changing

   while Something(f) do
     F.Somethingelse

to

   For f in Something do
     F.SomethingElse

The number of lines is equal, the amount of typed characters also is equal.
It's not more readable, either, IMHO.

When there is a big difference between the following goto and the while loop
it is supposed to be equal to:

   :jumphere;
   If Something(F) then
     begin
     F.SomeThingElse;
     Goto jumphere;
     end;

Here you need quite a few more lines and even an extra label definition, and
I don't think anyone will dispute that the while loop is more readable...

Michael.



More information about the fpc-devel mailing list