From: "Hanson, Rob" <[EMAIL PROTECTED]>
If you really want a loop to return something, you can roll your own, even
in Perl 5... but the syntax won't be as you gave.

Ye - i'm not searching a way to solve a single problem but trying to make programming easier. If loops returned values it would make the whole coding much clearlier and better structured - at least i believe so. It'd b easy to just watch a code and say what it's doing in many cases. Look at what You write below; it is of course clever code but cleverness and hacks often makes code hard to debug or read particularly when programs grow.


Yours,
---
Ville Jungman

How is this?  The only difference is that you need to put the array to loop
over after the code.  it's close though.

sub loop (&@);

my @x = (1,3,5,7);
my @y = loop {
  return $_[0]."a" if $_[0] > 4;
} @x;

print "@y";


sub loop (&@) { my $sub = shift; my @ret;

  foreach (@_) {
    my $val = &$sub($_);
    push @ret, $val if $val;
  }

  return @ret;
}

Rob


-----Original Message----- From: Ville Jungman [mailto:[EMAIL PROTECTED] Sent: Thursday, September 25, 2003 9:36 PM To: Hanson, Rob; [EMAIL PROTECTED] Subject: RE: Should loops return a value?


Rob, did You read my message at all :-) ?


i just was wandering if there _could_ be more readable way to do this.
Andnot only for to be readable. If loops (and maybe some other builtin
commands, too - we are not talking only about whiles and for's) returned
values, programming might be a way different because you could combine loops


with for example those greps and maps. Consider really what would be
possible to do with this (maybe look at those examples again, too, to get
the idea). Also You can not do everything with grep and map and on the other


hand they are not very fast to read or debug when comparizing with this.

i've _always_ wanted to have a program language where loop-commands could
return whatever is needed. It might be that someday i have to write such
language or make a fast poor implementation. If this ability would be
implemented wisely to perl (or to some other language), it wouldn't even
affect to performance (ok, maybe little bit). But it'd bring much power
because You could have more control, readibility and straightforwardity in
Your code - and maybe more speed in some circumstances, too.

Kindly, Ville Jungman

>From: "Hanson, Rob" <[EMAIL PROTECTED]>
>@values = (1,3,5,7);
>@bigger_than_4 = map {$_.'a'} grep {$_>4} @values;
>print "@bigger_than_4";
> > You need to escape a loop with a value.
>
>Not sure I understand what you are trying to accomplish, but this is the
>equivalent of your Perl version and is as short as your proposed syntax.
>
>while (<FH>) {
> next unless /stop/;
> #somthing
> last;
>}
>
>Rob
>
>
>-----Original Message-----
>From: Ville Jungman [mailto:[EMAIL PROTECTED]
>Sent: Thursday, September 25, 2003 8:25 PM
>To: [EMAIL PROTECTED]
>Subject: Should loops return a value?
>
>
>Shortly, I think it might be good if loops (etc.) could return values.
>
>
>
>Example 1: Retnext (like 'return next' borrowed from pl/sql)
>You want to extract numbers from an array if they are > 4 and put an
>'a'-letter after them.
>
> @values=(1,3,5,7);
> @bigger_than_4= # get an array from loop
> foreach $value(@values) {
> retnext $value."a" if $value > 4; # return value from loop if >


>4
>       }
>    ;
>
>
>
>Example 2: Retlast (== perl 'last'-command with a value)
>
>You need to escape a loop with a value. Familiar way:
>
>    while(<FH>){
>       if(/stop/){
>          $array_terminated='true';
>          last;
>       }
>    }
>    if($array_terminated){
>       # something
>    }
>
>This could be written as:
>
>    if(
>       while(<FH>){
>          retlast if /stop/;                  # returns $_ by default
>       }
>    ){
>       # something
>    }
>
>
>
>So, not very conserverite but think what all you could do with this.
>And please, let me know what you think about this. Crap?
>
>---
>
>ville jungman, 2 laureston crescent, tower, blarney, cork, ireland
>tel. + 353 - 21 - 451 6847, http://www.kolumbus.fi/vilmak
>usko Herraan Jeesukseen, niin sinä pelastut. (apt. 16:31)
>
>_________________________________________________________________
>Add photos to your messages with MSN 8. Get 2 months FREE*.
>http://join.msn.com/?page=features/featuredemail
>
>
>--
>To unsubscribe, e-mail: [EMAIL PROTECTED]
>For additional commands, e-mail: [EMAIL PROTECTED]
>
>--
>To unsubscribe, e-mail: [EMAIL PROTECTED]
>For additional commands, e-mail: [EMAIL PROTECTED]
>

_________________________________________________________________
MSN 8 helps eliminate e-mail viruses. Get 2 months FREE*.
http://join.msn.com/?page=features/virus

_________________________________________________________________
The new MSN 8: advanced junk mail protection and 2 months FREE* http://join.msn.com/?page=features/junkmail



-- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to