Raku / old-issue-tracker

Tickets from RT
https://github.com/Raku/old-issue-tracker/issues
2 stars 1 forks source link

Multi-dimensional Hash subscripts return a List even when indexing a single element #6130

Open p6rt opened 7 years ago

p6rt commented 7 years ago

Migrated from rt.perl.org#130947 (status was 'new')

Searchable as RT130947$

p6rt commented 7 years ago

From @smls

When using a multi-dimensional Hash subscript of the form `.{ ; }` the result is always returned as a List (as if taking a slice), even if the subscript for each dimension is scalar​:

  my %hash = a => {b => 2, c => 4};

  say %hash{"a"}{"b"}.perl; # 2   say %hash{"a";"b"}.perl; # (2,)

That doesn't seem logical, and is also inconsistent with multi-dimensional *Array* subscripts​:

  my @​array = 0, [0, 0, 42];   say @​array[1][2].perl; # 42   say @​array[1;2].perl; # 42

On the other hand, the design docs don't have much to offer on the subject...

- https://design.perl6.org/S09.html#Hashes -- Shows how to *statically declare* multi-dimensional Hashes (NYI in Rakudo), but not how to index them.

- https://design.perl6.org/S09.html#User-defined_array_indexing -- Shows mutli-dimensional associative indexing, but not for Hashes but rather for *Arrays with user-defined indices* (NYI in Rakudo).

p6rt commented 7 years ago

From @smls

I sent a pull request which fixes this bug​:

https://github.com/rakudo/rakudo/pull/1139