Larry Wall skribis 2005-11-18 11:36 (-0800): > In Perl 5, to set a slice, you have to write > %hash{ @keys } = @values;
"@"... :) > whereas in Perl 6, it'd be nice to be able to say that with all > the keys and values on the right side somehow. Shouldn't a simple %hash = @keys Y @values; suffice? I disagree, though, that --except for the case of initializing the hash together with its declaration-- having the keys on the LHS is bad. It's actually very good documentation, and to me, much clearer than any of your examples: > @bins:[] = label { calc_int($_) } LIST; > %bins:{} = label { calc_str($_) } LIST; > @bins.pairs = label { calc_int($_) } LIST; > %bins.pairs = label { calc_str($_) } LIST; Which really all are more complex than the initial example: > map { calc_int($_) => $_ } LIST Are commas optional after closures? > %bins.pairs = %bins.pairs, label { calc_str($_) } LIST; Is , higher precedence than = now? > %bins.clear.pairs = label { calc_str($_) } LIST; As someone who hates methods that return the invocant itself (even if that isn't technically what happens), I have to object. Such combination doesn't work well in my brain. I'd prefer: %bins.clear; %bins.pairs = ...; Although I think the current situation with simple assignment is still much better: %bins = ...; Juerd -- http://convolution.nl/maak_juerd_blij.html http://convolution.nl/make_juerd_happy.html http://convolution.nl/gajigu_juerd_n.html