On Mon, 28 Jan 2013, Alexander Klenin wrote:

On Mon, Jan 28, 2013 at 1:26 AM, Paul Ishenin <paul.ishe...@gmail.com> wrote:
27.01.13, 1:43, Sven Barth wrote:

Based on the results of the "for-in-index" thread I've decided to come
up with a draft for the Tuple type which is thought by many people to be
a better alternative to "for-in-index".
I think it is big overkill to implement a new base type for such a small
task as returning a key in for-in loop.
Of course. But note that in this thread, many more uses of tuples
(which I do NOT want to make a type -- see my previous mail for
lengthy explanation why).
Some of the uses are: record and array constructors, adaptation of
inconvenient signatures,
better support for "return code" style of error handling, etc.

And (for Michael) I don't see any beauty in this. Imo, initial index
extension is much more beauty than suggested here (a,b,c) := d;
constructions.
I have a compromise suggestion:
Implement for-index extension with the syntax:
for (k, v) in a do
this syntax is forward-compatible with both tuples proposals,
is simple to do (basically, already done -- only a small change in
parsing is required)

what concerns syntax, I have no problem with this.

What bothers me immensely is the same what bothered me in the totally braindead
Delphi implementation of the "for in" loop : the bunch of requirements you put on the iterator implementation: an interface with special status. You can't get more stupid and ugly than that. I would gladly kill the borland/inprise/embarcadero engineer who thought of this, after torturing him for 3 days, just for unleashing this monstrosity on the world...

[Disclaimer: the above is humor. Just trying to show how bad I think it is]

Your initial proposal makes it even worse by adding more conditions to the 
interface,
it would not even be an interface any more.

So: No, no, no. It is ugly beyond words.

That is why I think you need a proper "tuple" value to solve this.
it gives a more fundamental solution: the loop variable type equals the type returned by the iterator/enumerator. No messing with index (bad syntax) and even worse: special 'interfaces' and whatnot.

Pascal is a strongly typed language. So, if we absolutely must solve this:
introduce a proper type. A tuple fits the job.

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

Reply via email to