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/hlD7eRLLzWPrefix + requires an argument, but no > valid > term foundat /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/YpB9DyyE64Operators '(+)' and '(-)' are non- > associative > and require parenthesesat /tmp/YpB9DyyE64:1------> > ( 1 .. 3 > ); my $c = bag(); say $a (+) $b⏏ (-) $c; > expecting any > of: i…» >