develooper Front page | perl.perl6.language | Postings from November 2003

Re: Control flow variables

Thread Previous | Thread Next
From:
Jonathan Scott Duff
Date:
November 20, 2003 02:50
Subject:
Re: Control flow variables
Message ID:
20031119211410.GH19760@lighthouse.tamucc.edu
On Wed, Nov 19, 2003 at 12:49:21PM -0800, Larry Wall wrote:
> Sorry, I wasn't being very clear.  It wouldn't be logically attached to
> the outside of the for, but to the inside of the "confer", or whatever:
> 
>     @foo = gather {
> 	for @a -> $x { pick $x if mumble($x) }
> 	DEFAULT { @results }
>     }

So ... the only way to get Damians semantics ...

On Wed, Nov 19, 2003 at 08:01:40AM +1100, Damian Conway wrote:
>     * vector control structures like C<loop>, C<while>, and C<for> in
>       a list context return a list of the values of the last statement
>       each iteration evaluated;
>
>     * vector control structures like C<loop>, C<while>, and C<for> in
>       a scalar context return an integer indicating the number of
>       times their block was iterated.

... is to surround the control structure with a gather { ... }  ??

It seems like "gather" or whatever should be some sort of modifier to
for/loop/while/until

	@foo = for : gather @a -> $x { ... }
	if for : gather @a -> $x { ... } < 3 { ... }	# ick!
	if : gather for : gather @a -> $x { ... } < 3 { ... }	# ick!**2
	for : gather @a -> $x { ... } or @results;
	for : gather @a -> $x { ... } or do { ... }

Okay, so the syntax isn't great.  I'm just brainstorming.

Having a gather block just feels wrong to me. It's weird to say that
control structure X only has a result when placed inside of a special
block. But maybe it *needs* to be weird.

> On the other hand, putting the default up front is clearer if the
> block is long.  Could even be something like:
> 
>     @foo = gather is default(@results) {
> 	for @a -> $x { pick $x if mumble($x) }
>     }

Hmm.

	@foo = for :gather,default(@results) @a -> $x { ... }

-Scott
-- 
Jonathan Scott Duff
duff@lighthouse.tamucc.edu

Thread Previous | Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About