Actually, Zoffix pointed out to me on IRC that it's a bug; say is
supposed to call .gist on the Junction itself. Until that gets fixed,
it's probably a good idea to use `say $foo.perl` or `put $foo.perl` instead.

The justification is that `say` is often used "to dump iffy stuff that
doesn't quite stringify", and that "say all()" not outputting anything
is rather bad.

What exactly "say $a-junction" does isn't currently part of 6.c spec and
we're still trying to figure out how it should behave. We're not sure if
"put $a-junction.gist" will stay the way it is, either.

Sorry for the improper information before
  - Timo


On 25/02/18 17:04, Timo Paulssen wrote:
>
> That was the behaviour before those commits. It was explicitly changed
> to how it works now, I believe.
>
>
> On 25/02/18 16:54, yary wrote:
>> Should "say" handle junctions and wrap them with ".gist?" Seems like
>> it ought to, but maybe that introduces problems.
>>
>> -y
>>
>> On Sun, Feb 25, 2018 at 11:48 AM, Timo Paulssen <t...@wakelift.de
>> <mailto:t...@wakelift.de>> wrote:
>>
>>     That's right. Say will also call .gist on what you pass to it,
>>     but say doesn't declare that it handles junctions, so before it
>>     can call .gist on what it gets, it will be handled by the
>>     auto-threader, so you'll get say, and therefor .gist, called on
>>     everything inside the junction and the result will be re-combined
>>     into a junction again.
>>
>>
>>     On 25/02/18 12:05, yary wrote:
>>>     I don't have Rakudo handy, is the answer to "how to make
>>>     junctions show as Sean expects"
>>>
>>>     say $junction.gist ;
>>>
>>>     ?
>>>
>>>     -y
>>>
>>>     On Sat, Feb 24, 2018 at 7:27 PM, Timo Paulssen <t...@wakelift.de
>>>     <mailto:t...@wakelift.de>> wrote:
>>>
>>>         I'm pretty sure you're running up against this change in rakudo:
>>>
>>>         https://github.com/rakudo/rakudo/blob/master/docs/ChangeLog#L203
>>>         <https://github.com/rakudo/rakudo/blob/master/docs/ChangeLog#L203>
>>>         >     + Made print/say/put/note handle junctions correctly
>>>         [07616eff]
>>>         >        [9de4a60e][8155c4b8][3405001d]
>>>
>>>         the relevant commits being:
>>>
>>>         https://github.com/rakudo/rakudo/commit/07616eff
>>>         <https://github.com/rakudo/rakudo/commit/07616eff>
>>>         > Make print/say/put/note handle junctions correctly
>>>         >
>>>         > - well, for some value of correctly
>>>         > - introducing helper method Junction.THREAD
>>>         > - to be used if you have a multi with **@foo as a signature
>>>         > - print/say/put/note now return Junction if given a Junction
>>>
>>>         https://github.com/rakudo/rakudo/commit/3405001d
>>>         <https://github.com/rakudo/rakudo/commit/3405001d>
>>>         > Make put/print "a",any(<b c d>) work
>>>         >
>>>         > - we already had a candidate for handling a Junction, but
>>>         not if part
>>>         of a List
>>>         > - simplified the code to let List.join do the hard work
>>>         > - which automatically takes care of the Junction issue
>>>
>>>         You're not getting junctions "stringified as one alternative
>>>         per line",
>>>         rather you're getting the default auto-threading that
>>>         junctions do and
>>>         the say is being run once per value in the junction.
>>>
>>>         Hope that clears things up
>>>           - Timo
>>>
>>>
>>
>>
>

Reply via email to