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