Luke Palmer wrote:
Larry Wall writes:
Certainly. The zone markers are as orthogonal to sigils as we can
make 'em. Though I'm not sure we've given a meaning to *&foo yet.
I suppose that would have to mean that the next slurpy parameter has
to be a sub ref.
Uhmm... isn't *&foo the adverbial block? That is, isn't it where grep gets its code block in:
@list.grep:{ $_ % 2 }
In S29, I currently have C<grep> as:
multi sub grep (Any|Junction $test : [EMAIL PROTECTED]) returns List {
gather {
for @values -> $x {
take $x if $x ~~ $test;
}
}
}
If you wish to supply a closure for C<$test>, you're free to do so.
If I were building it to accept just a closure, I would think:
multi sub grep (Code &test : [EMAIL PROTECTED])
or
multi sub grep (: Code +&test = &defaulttest , [EMAIL PROTECTED])
would make more sense than:
multi sub grep (: Code *&test, [EMAIL PROTECTED])
At least to me it does. If you see some advantage to that way, please inform me of it. It might change C<map> away from:
multi sub map (Code $expression : [EMAIL PROTECTED]) returns List {
gather {
while @values {
take $expression
.( splice(@values, 0, $expression.arity) );
}
}
}
-- Rod Adams
