bri*_*foy 14 perl6 associativity raku
Clickbaity标题,但它太多了,不能放弃.我有这个运算符,我希望是正确的关联:
sub infix:<?> ( Int:D \n, Int:D \m --> Int:D )
is assoc<right>
is equiv(&infix:<**>)
{ n ** m }
put "2**2**2**2 = ", 2**2**2**2;
put "2?2?2?2 = ", 2?2?2?2;
put "2? (2? (2?2) ) = ", 2? (2? (2?2) );
Run Code Online (Sandbox Code Playgroud)
这是不正确的联想:
2**2**2**2 = 65536
2?2?2?2 = 256
2? (2? (2?2) ) = 65536
Run Code Online (Sandbox Code Playgroud)
我做得不对(咳咳)?
小智 14
看起来这里有一堆虫子......
首先,is assoc在这种特殊情况下不需要.由于is equiv 将所有的选项,而不是优先级,并且&infix:<**>是右结合.
它不起作用的原因是因为有人在2017年4月将其删除assoc(通常将其设置为左关联).
我现在已经恢复了那个提交,但是在一个分支中,因为恢复操作RT#132711,这是原始删除assoc尝试修复.我将在本周末修复该bug,然后合并修复程序 更新:它实际上在EXPR解析器中爆炸.我的rakudo haxor级别还不足以处理那件事,所以我现在就把它留给更聪明的人.is equiv.
PS:你可以通过编写内容&[**]而不是代码来保存一些字符&infix:<**>