Skip Menu |
Report information
Id: 131856
Status: new
Priority: 0/
Queue: perl6

Owner: Nobody
Requestors: cpan [at] zoffix.com
Cc:
AdminCc:

Severity: (no value)
Tag: (no value)
Platform: (no value)
Patch Status: (no value)
VM: (no value)



Subject: [@LARRY] Junctions don't junct when routine has a slurpy, leading to inconsistent behaviour with core routines
Download (untitled) / with headers
text/plain 1.3k
Originally taken from: https://stackoverflow.com/questions/45527881/why-does-and-affect-perl-6-junctions-differently For example, there's a difference between output of using `+` and using `~` with a Junction. With `+` you get a junction back, while `~` slurps and just .Strs (which .perls) the Junction: <Zoffix__> put any( 1, 3, 7 ) + 1; <Zoffix__> m: put any( 1, 3, 7 ) + 1; <camelia> rakudo-moar a91ad2: OUTPUT: «any(2, 4, 8)␤» <Zoffix__> m: put any( <h H> ) ~ 'amadryas'; <camelia> rakudo-moar a91ad2: OUTPUT: «any("h", "H")amadryas␤» The reason is the `~` has a slurpy candidate, while `+` doesn't: Junction as just an arg: <Zoffix__> m: sub foo (+@a) { @a.join: '|' }; say foo <h H>.any, 'amadryas' <camelia> rakudo-moar a91ad2: OUTPUT: «any("h", "H")|amadryas␤» <Zoffix__> m: sub foo (*@a) { @a.join: '|' }; say foo <h H>.any, 'amadryas' <camelia> rakudo-moar a91ad2: OUTPUT: «any("h", "H")|amadryas␤» Junctioned call: <Zoffix__> m: sub foo ($a, $b) { ($a, $b).join: '|' }; say foo <h H>.any, 'amadryas' <camelia> rakudo-moar a91ad2: OUTPUT: «any(h|amadryas, H|amadryas)␤» There are two question: 1) Is it possible to make slurpies junct, same as non-Mu scalar candidates? 2) If not, what do we do to make interface consistent; so that all the ops do the same thing?


This service is sponsored and maintained by Best Practical Solutions and runs on Perl.org infrastructure.

For issues related to this RT instance (aka "perlbug"), please contact perlbug-admin at perl.org