It looks like it works if you call the .Seq method on a scalar $index :

> my @array = 9 ... 0
[9 8 7 6 5 4 3 2 1 0]
> my $index = map { $_, $_ + 1 }, ^9
((0 1) (1 2) (2 3) (3 4) (4 5) (5 6) (6 7) (7 8) (8 9))
> say @array[$index.Seq]
((9 8) (8 7) (7 6) (6 5) (5 4) (4 3) (3 2) (2 1) (1 0))
> put @array[$index.Seq]
9 8 8 7 7 6 6 5 5 4 4 3 3 2 2 1 1 0
>

HTH, Bill.

On Fri, Aug 16, 2019 at 4:25 AM Elizabeth Mattijsen <l...@dijkmat.nl> wrote:
>
> Feels like worthy of making an issue for this to me.
>
> > On 16 Aug 2019, at 12:18, Sean McAfee <eef...@gmail.com> wrote:
> >
> > Today I was surprised and pleased to find that I could apparently subscript 
> > an array with a list of lists of indices, and get a list of slices back:
> >
> > > my @array = 9 ... 0
> > [9 8 7 6 5 4 3 2 1 0]
> > > @array[map { $_, $_ + 1 }, ^9]
> > ((9 8) (8 7) (7 6) (6 5) (5 4) (4 3) (3 2) (2 1) (1 0))
> >
> > Neat!  But when I tried to clean up my code a bit, it broke.
> >
> > > my @index = map { $_, $_ + 1 }, ^9
> > [(0 1) (1 2) (2 3) (3 4) (4 5) (5 6) (6 7) (7 8) (8 9)]
> > > @array[@index]
> > (7 7 7 7 7 7 7 7 7)
> >
> > Weird.  But map returns a Seq, right?  So maybe...
> >
> > > @array[@index.Seq]
> > (7 7 7 7 7 7 7 7 7)
> >
> > Hmm.  How about:
> >
> > > @array[@index.List]
> > ((9 8) (8 7) (7 6) (6 5) (5 4) (4 3) (3 2) (2 1) (1 0))
> >
> > That works again.  But why?  Is this the intended behavior?  If so, is it 
> > documented somwhere?
> >

Reply via email to