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/

Reply via email to