On Mon, 07 Aug 2017 15:34:26 -0700, c...@zoffix.com wrote: > 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?
Hello, Past Zoffix. How do you imagine slurpies would junct even? Scanning all elements (including nested ones) for Junctions? Rejecting this as I don't see anything sane coming out from it. The `~` was made to behave the same as `+` now; though the overall goalpost was moved and there's now a problem with output routines: https://rt.perl.org/Ticket/Display.html?id=132549#ticket-history