On Mon, Jan 29, 2007 at 10:08:34PM +0200, Gaal Yahas wrote: > On Mon, Jan 29, 2007 at 10:01:08PM +0200, Gaal Yahas wrote: > > > +Because C<gather> evaluates its block or statement in void context, > > > +this typically causes the C<take> statement to be evaluated in void > > > +context. However, a C<take> statement that is not in void context > > > +gathers its arguments I<en passant> and also returns them unchanged. > > > +This makes it easy to keep track of what you last "took": > > > + > > > + my @uniq = gather for @list { > > > + state $previous = take $_; > > > + next if $_ === $previous; > > > + $previous = take $_; > > > + } > > > > What does it mean for take to be evaluated in void context? > > > > What are the gathered values here? > > > > take 1, 2; # easy. flattened 1 and then 2, right? > > @x = take 1, 2; # same thing? > > $x = take 1, 2; # same thing? [1, 2]? > > In fact, $x = take 5; # if this were Perl 5, I might expect > # either 1 or [1] here!
Ugh, sorry, I meant either 1 or [5]. -- Gaal Yahas <[EMAIL PROTECTED]> http://gaal.livejournal.com/