Flesxible looping [Was: Making Revolution faster with really big arrays]
Frank D. Engel, Jr.
fde101 at fjrhome.net
Wed Apr 13 11:33:27 EDT 2005
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
People working on computer languages generally avoid (and with good
reason) adding new keywords.
Have you considered "and for" rather than "also"?
On Apr 13, 2005, at 11:25 AM, Alex Tweedly wrote:
> Dennis Brown wrote:
>
>> The Idea is to break apart the essential functional elements of the
>> repeat for each control to allow more flexibility. This sample has a
>> bit more refinement than what I posted yesterday in Bugzilla.
>>
>> The new keyword would be "access" , but could be something else.
>>
>> An example of the use of the new keywords syntax would be:
>>
>> access each line X in arrayX--initial setup of pointers and X value
>> access each item Y in arrayY --initial setup of pointers and Y value
>> repeat for number of lines of arrayX times --same as a repeat for each
>> put X & comma & Y & return after ArrayXY --merged array
>> next line X --puts the next line value in X
>> next item Y --if arrayY has fewer elements than arrayX, then empty
>> is supplied, could also put "End of String" in the result
>> end repeat
>>
>> Another advantage of this syntax is that it provides for more
>> flexibility in structure of loops. You could repeat forever, then
>> exit repeat when you run out of values (based on getting an empty
>> back). The possibilities for high speed sequential access data
>> processing are much expanded which opens up more possibilities for
>> Revolution.
>
>
> Dennis,
>
> I think having more flexible repeat structures to allow parallel
> passes through lists or arrays is a really good idea, but I don't like
> the form you have suggested. It seems wrong to have separate
> statements to setup the loop; as far as I know, the language currently
> keeps the meaning of each statement self-contained, so I think this
> multi-line form would be a hard one to "sell".
>
> I think it would be better to add a new keyword to indicate parallel
> looping; the primary loop determines the repeat-termination test
> criterion, while the others are incremented/advanced in synch. (of
> course, using exit allows you to terminate the loop based on the
> secondary loops if needed).
>
> I'd suggest the word "also" since it's not currently used, or perhaps
> the phrase "also each".
>
> So the form would be something like
>
>> repeat for each line X in xList also item Y in yLine repeat for each
>> line X in xList also each item Y in yLine repeat for each line X in
>> xList and also each item Y in yLine
>
> and of course there could be more than 2 :
>
>> repeat for each line Y in ylist also line x in xlist also item z in
>> zlist also item name in namelist ...
>
>
> This would allow the variants
>
>> repeat forever also each item Z in theList
>> repeat for each element E in myArray also each line X in xList
>> repeat with i = 1 to 100 also each line X in xList
>
> etc.
>
>
> And for symmetry, it might also be feasible to allow
>
>> repeat for each X in Xlist also i = 1 step 1
>
> (since there's not a terminating condition in the secondary, it would
> confusing to have i = 1 to 100, so simply specify initial and step
> values).
>
>
> Similar to this, I'd love to see a method for accessing arrays which
> gives both the key and the element. Currently, you can say
> repeat for each line K in the keys of myArray
> put myArray[k] into V
> but most modern languages have something like
> for (k,v in myarray)
> which gives both key and value without needing to do another hash
> lookup.
>
> And now that I'm started on this topic, I've always envied the
> readability of Python's tuple-assignment. I find
> x1,y2,x2,y2 = myRectangle
> much more obvious than
> x1 = myRectangle[0]
> y1 = myRectangle[1]
> x2 = myRectangle[2]
> etc.
>
> In Transcript, I really wish I could say
> put myRectangle as items into x1,y1,x2,y2
> or
> put the items of myRectangle into x1,y1,x2,y2
> instead of the clumsy
> put item 1 of myRect into X
> put item 2 of myRect into Y
> etc.
>
> No performance advantage - but so much more readable.
>
> --
> Alex Tweedly http://www.tweedly.net
>
>
> No virus found in this outgoing message.
> Checked by AVG Anti-Virus.
> Version: 7.0.308 / Virus Database: 266.9.7 - Release Date: 12/04/2005
> _______________________________________________
> use-revolution mailing list
> use-revolution at lists.runrev.com
> http://lists.runrev.com/mailman/listinfo/use-revolution
>
- -----------------------------------------------------------
Frank D. Engel, Jr. <fde101 at fjrhome.net>
$ ln -s /usr/share/kjvbible /usr/manual
$ true | cat /usr/manual | grep "John 3:16"
John 3:16 For God so loved the world, that he gave his only begotten
Son, that whosoever believeth in him should not perish, but have
everlasting life.
$
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.4 (Darwin)
iD8DBQFCXTvH7aqtWrR9cZoRAmvNAJ9ehYE1TgzLys89AibBMfYN+BcjgwCfXMvJ
sEGH5kcSEj+3yPAnAPUeN+k=
=pj+O
-----END PGP SIGNATURE-----
___________________________________________________________
$0 Web Hosting with up to 200MB web space, 1000 MB Transfer
10 Personalized POP and Web E-mail Accounts, and much more.
Signup at www.doteasy.com
More information about the use-livecode
mailing list