Let's say two people want to add a 'shuffle' method to all arrays. Alice wants
to have it look like this:
method shuffle (*...@array is rw) {
@array .= pick(*);
}
Bob wants it to look like this:
method shuffle (*...@array is rw) {
@array = @array[0 .. @array/2] Z @arr...@array/2+1 .. @array];
}
Thus, each wants to do the following, being able to modify the array in place:
my @array = ^10;
@array.shuffle;
Is it possible to modify the core Perl6Array class like that (without extra
keywords)? If so, is it possible for each programmer to make such a change so
that it's lexically scoped?
Oh, and the difference between those, for lurkers:
perl6 $ perl6 -e 'my @a = <a b c d e f g>; [...@a[0..@a/2]
z...@a[@a/2+...@a]].perl.say'
["a", "e", "b", "f", "c", "g"]
perl6 $ perl6 -e 'my @a = <a b c d e f g>; @a .= pick(*); @a.perl.say'
["g", "a", "f", "c", "e", "d", "b"]
Cheers,
Ovid
--
Buy the book - http://www.oreilly.com/catalog/perlhks/
Tech blog - http://use.perl.org/~Ovid/journal/
Twitter - http://twitter.com/OvidPerl
Official Perl 6 Wiki - http://www.perlfoundation.org/perl6