On Mon, 24 Jul 2017 01:54:53 -0700, elizabeth wrote: > > > On 23 Jul 2017, at 22:27, Sam S. via RT <perl6-bugs- > > follo...@perl.org> wrote: > > > >> Which then goes back to: what is the use case of Slipping an Array? > > > > Same as slipping any other type of Iterable: Fine-grained, elegant > > flattening and concatenating. > > > > Compare: > > > > my @all = flat $first, @rest; > > > > my @all = $first, |@rest; > > > > When you *know* that $first is a Scalar and @rest is an Array, those > > two do the same thing because `flat` doesn't descend into item > > containers. > > > > But if those are, say, function parameters, then they can become > > bound to other things, e.g. the calling code could pass a List to > > `@rest` which *doesn't* have its elements itemized, so the version > > with `flat` would destroy the elements' internal structure. > > > > Even if that wasn't the case, I'd consider the `|` version more > > elegant than the `flat` version, because it denotes very clearly to > > the reader *where* exactly something is being flattened into the > > outer list. > > > >> because Slip is a List, it uses List.AT-POS, and that one > >> doesn’t create a WHENCE with a container to be filled at a later > >> time. > > > > Couldn't `@array.Slip` be made to properly iterate @array behind the > > scenes (the same way that `@array.map` would iterate it), instead of > > reaching into @array's guts and copying its elements in a way that > > misinterprets some of them? > > Which is exactly what 12d7d5b48add8347eb119 does. > > So fixed, and tests needed!
Tests added in https://github.com/perl6/roast/commit/24d5fcb486 However, the values for .List differ depending on how you access them. If you use iterator, you get a Mu for a hole, but if you use AT-POS you get a Nil.. 13:04 Zoffix m: (my @a)[1] = Mu; my @b is default(42) = @a.List; say @b 13:04 camelia rakudo-moar b8eda6: OUTPUT: «[(Mu) (Mu)]» 13:04 Zoffix m: (my @a)[1] = Mu; my @b is default(42) = @a.List[*]; say @b 13:04 camelia rakudo-moar b8eda6: OUTPUT: «[42 (Mu)]» I filed a separate ticket for that: https://rt.perl.org/Ticket/Display.html?id=132261 IRC: https://irclog.perlgeek.de/perl6-dev/2017-10-10#i_15283224