# New Ticket Created by  "Carl Mäsak" 
# Please include the string:  [perl #112362]
# in the subject line of all future correspondence about this issue. 
# <URL: https://rt.perl.org:443/rt3/Ticket/Display.html?id=112362 >


<moritz> masak: I think there's also an unsubmitted rakudobug in
today's backlog, kind of as a delayed Easter egg for you :-)
<pmichaud> there are probably a couple :)
<moritz> (I meant the one with %h{<a b>} vs. %h{[<a b>]}
<moritz> p6: my %h = a => 1, b => 2, 'a b' => 3; say %h{[<a b>]}
<p6eval> pugs, niecza v15-6-gefda208: OUTPUT«3␤»
<p6eval> ..rakudo 4373f0: OUTPUT«1 2␤»
<moritz> looks like over-eager flattening to me
* masak submits rakudobug
<pmichaud> p6:  my @a = 0..5;  say @a[ [2, 3] ]
<p6eval> pugs, niecza v15-6-gefda208: OUTPUT«2␤»
<p6eval> ..rakudo 4373f0: OUTPUT«2 3␤»
<pmichaud> I think rakudo might be right here.
<pmichaud> Since [2,3] is Positional, the result is a slice.
<masak> pmichaud: I'll note that in the rakudobug.
<moritz>  p6:  my @a = 0..5;  say @a[ [2, 3], 0 ]
<p6eval> pugs: OUTPUT«20␤»
<p6eval> ..niecza v15-6-gefda208: OUTPUT«2 0␤»
<p6eval> ..rakudo 4373f0: OUTPUT«2 3 0␤»
<moritz> pmichaud: I'm pretty sure in this example rakudo is wrong
<pmichaud> I'm certain rakudo is wrong there.
<pmichaud> oh, wait, maybe not
<moritz> in general [] should never be implicitly flattened
<pmichaud> well, it's not really being flattened here.
<pmichaud> what's happening is that we're getting a slice of   (@a[
[2,3] ], @a[0])
<moritz> it's been treated as two elements rathar than one. To me
that's flattening
<pmichaud> r:  my @a = <a b c d e>;  say @a[ [2, 3], 0 ].perl
<p6eval> rakudo 4373f0: OUTPUT«(("c", "d"), "a")␤»
<pmichaud> right
<pmichaud> it's not really "flattening"
<moritz> I'm pretty sure that's wrong too
<pmichaud> I'm not sure what "right" would be here.
<moritz> if it descends into [], then the return value shouldn't flatten
<pmichaud> you're saying that scalar-ness should trump Positional-ness
<moritz> yes
<moritz> well
<pmichaud> i.e., the fact that something is scalar should prevent it
from being treated as a Positional
<moritz> I'm not sure it should trump it, but at some level it should
be preserved at least
<masak> I think I agree.
<moritz> I find ('c', 'a') and (('c', 'd').item, 'a') acceptable outcomes
<TimToady> I only like the first
<moritz> though currently I think that the former makes more sense,
because .[] is not specced as hyper
<pmichaud> okay, so a Positional (or anything?) in a scalar container
shouldn't slice
<TimToady> I think only the first makes sense, because a subscript is
a LoL, and the second level list is still just a list, and [] doesn't
interpolate into it
<moritz> pmichaud: anything in a scalar container shouldn't slice
<TimToady> the rules of list interpolation don't change just becuase
we're inside [1,2,3; 4,5,6; 7,8,9]
< pmichaud> this really doesn't have anything to do with list
interpolation, at least not in Rakudo's case.
<pmichaud> anyway, I can fix it now.

Reply via email to