On Fri, 25 Jan 2013, Sven Barth wrote:

On 25.01.2013 17:18, Alexander Klenin wrote:
With this in mind, consider a user who wants to iterate over the
following array:

var
   a: array [1..5] of Integer = (1, 2, 9, 4, 5);

In my proposal, he should write:
var
   v, i: Integer;
begin
   for a in a index i do
     Writeln(i, ' ', v);
end.

In your proposal, he should write (suppose GIter is a unit
implementing the generic array iterator):
uses
   GIter;
type
   TArrayIntIterator = specialize TArrayIterator<Integer>;
   i: TArrayIntIterator.TElem;
begin
   for i in TArrayIntIterator.Create(a) do
     Writeln(i.Index + Low(a), ' ', i.Value);
end.

One could also do an alternative (though currently not with arrays, but with type helper support even that would be possible...):

Talk about a choice between the plague and cholera...

If I must choose between the proposed extension of for in index do
and having anonymous functions, then I choose for for in index :)
(and most likely ending up with both monstrosities)

Pascal is an explicitly declarative language. Anonymous functions go 100% against this. It is the readability horror I associate with Javascript.

I often wonder: why do people who seem to think that Pascal misses so many - apparently essential - things, even bother to use it ?

If I thought Pascal was missing so many things, I would simply use something else instead of trying to turn it into something that it is not.

Michael.
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to