1. I think it is properly guarded now. (error message: Cannot coerce a lazy
list onto a Bag)
2. That's OK. A lot of things require whitespace in 6lang (another example
here:
https://docs.6lang.org/language/traps#Less_than_vs._Word_quoting/Associative_indexing
). If you insist on no whitespace you're free to use ⊎.
3. Here's the current error message: “Only identical operators may be list
associative; since '(+)' and '(-)' differ, they are non-associative and you
need to clarify with parentheses”. I'm not sure if (+) and (-) should work
without parens.

I think we need a test for the first issue, second issue can be rejected and
3rd has to be separated into a separate RFC ticket.

Therefore TESTNEEDED. Whoever writes a test can decide whether 3rd issue should
be rejected or separated into another ticket :)

On 2015-07-09 02:27:18, liu...@360.cn wrote:
> 15:20 < kanl> my $a = bag( -Inf .. Inf ); my $b = bag( 1 .. 3 ); my $c
> = bag();
> say $a(+)$b(+)$c; ## this won't work
> 15:21 < kanl> 1. Inf is not properly guarded
> 15:21 < kanl> 2. the (whatever) operator requires leading whitespaces.
> 15:21 < kanl> 3. can't mix the operators without grouping ()
> 15:23 < kanl> m: my $a = bag( 1 .. 4 ); my $b = bag( 1 .. 3 ); say
> $a(+)$b;
> 15:23 < kanl> m: my $a = bag( 1 .. 4 ); my $b = bag( 1 .. 3 ); my $c =
> bag();
> say $a (+) $b (-) $c;
> 15:23 <+camelia> rakudo-moar 377672: OUTPUT«===SORRY!=== Error while
> compiling
> /tmp/hlD7eRLLzW␤Prefix + requires an argument, but no
> valid
> term found␤at /tmp/hlD7eRLLzW:1␤------> .. 4 ); my
> $b = bag(
> 1 .. 3 ); say $a(+⏏)$b;␤ expecting any of:␤
> prefix␤»
> 15:24 <+camelia> rakudo-moar 377672: OUTPUT«===SORRY!=== Error while
> compiling
> /tmp/YpB9DyyE64␤Operators '(+)' and '(-)' are non-
> associative
> and require parentheses␤at /tmp/YpB9DyyE64:1␤------>
> ( 1 .. 3
> ); my $c = bag(); say $a (+) $b⏏ (-) $c;␤
> expecting any
> of:␤ i…»
>

Reply via email to