My mnemonic is "x (one thing) is for scalars, xx (many things) is for
lists". Using that, there's seldom any confusion.

The reason Perl 6 makes the distinction is that (unlike Perl 5) it
*has to*. Perl 5 does context-based dispatch, whereas Perl 6 does
argument-based dispatch. We greatly prefer the latter, and it's an
either-or situation, so two operators it is.

// Carl

On Fri, Dec 20, 2013 at 4:52 AM, Richard Hainsworth
<rich...@rusrating.ru> wrote:
> OK x not xx.
>
> The doubling of operators is confusing.
>
> Richard
>
> On 12/19/2013 10:01 PM, Jonathan Worthington wrote:
>>
>> On 12/19/2013 3:47, Richard Hainsworth wrote:
>>>
>>> Initially I though the following was a bug, but now I'm not sure.
>>>
>>> I got these results
>>>
>>> perl6 -v
>>> This is perl6 version 2013.09 built on parrot 5.5.0 revision 0
>>> $ perl6
>>> > say '0' xx 4
>>> 0 0 0 0
>>
>> Are you sure you didn't want the x (string repetition) operator, instead
>> of xx (list repetition)?
>>
>>> > print '0' xx 4
>>> 0000> print 's' ~ ('0' xx 4)
>>> s0 0 0 0>
>>>
>>>
>>> I'm not sure why the elements of the expansion are padded with a trailing
>>> space in one context but not in another.
>>>
>> print calls .Str, say calls .gist.
>>
>>> I wasn't sure whether this is the specified behaviour.
>>
>> It is.
>>
>>> If it is how can it be turned off?
>>
>> Call .Str or .gist on the argument to print/say as needed.
>>
>> I suspect that the problem will be resolved by using the x operator
>> instead of xx, however. :-)
>>
>> /jnthn
>>
>>
>

Reply via email to