Hi,

"TSa (Thomas Sandlaß)" wrote:
> Ingo Blechschmidt wrote:
>> Is this a bug in S29 or will this be feature removed from Perl 6
>> and you'll have to say (for example)
>>  
>>   use listops :mutating;
>>   my @result = map { $_++; 42 } @array;  # works now
> 
> Why not just
> 
>      my @result = map -> $_ is rw { $_++; 42 } @array;  # works now

right, but IIRC if you omit the signature and the ->, you're implicitly
declaring ($_ is rw):

    for @array             { $_++ }   # works
    for @array -> $_       { $_++ }   # error, $_ not rw
    for @array -> $_ is rw { $_++ }   # works

    for @array -> $a       { $a++ }   # error, $a not rw
    for @array -> $a is rw { $a++ }   # works

Pugs seems to confirm this:

    my $coderef = { $_++ };
    my $var     = 3;
    $coderef($var),                   # no error
    say $var;                         # 4

If I'm wrong, and $_ is ro by default, then I like your solution very
much, as it makes my intention very clear ("look! I'll probably modify
$_ soon!"). :)


--Ingo

-- 
Linux, the choice of a GNU | Knowledge is that which remains when what
generation on a dual AMD   | is learned is forgotten. - Mr. King  
Athlon!                    | 

Reply via email to