如何解决在Raku REPL中定义后缀运算符时出现问题
如果我在raku中有以下程序,则效果很好:
trabajando-en-piensa-en-raku on master [?] via ? v2.6.5
❯ cat factorial.raku
sub factorial( $n ) {
[*] 1 .. $n;
}
sub postfix:<!>( $n ) {
[*] 1 .. $n;
}
my $n = 5;
say "El factorial de $n es {factorial $n}";
say "Si calculamos $n! obtenemos {$n!}";
trabajando-en-piensa-en-raku on master [?] via ? v2.6.5
❯ raku factorial.raku
El factorial de 5 es 120
si calculamos 5! obtenemos 120
但是,如果我在raku REPL中定义此函数,则会得到:
> * * &factorial
> 5
> El factorial de 5 es 120
它可以正常运行,并且可以实现阶乘函数的预期功能,但是我得到了!运算符:
> * * &postfix:<!>
> ===SORRY!=== Error while compiling:
Negation metaoperator not followed by valid infix
------> say "Si calculamos $n! obtenemos {$n!⏏}";
expecting any of:
infix
infix stopper
我需要特殊的sintax才能在raku REPL中定义运算符,或者取决于环境的加载方式。
我在OSX Catalina中使用
trabajando-en-piensa-en-raku on master [?] via ? v2.6.5
❯ rakubrew versions
system
moar-2020.07
* moar-2020.08.2
解决方法
恐怕REPL处于当前状态,它在某些Raku功能方面存在一些缺陷,例如本机变量和运算符定义, IF 都是在多行中执行的。
当前,REPL基本上为每行执行一个EVAL
语句,而调用之间共享的信息不足。短期内不会改变。明年某个时候,当rakuast分支着陆时,情况可能会变得更好。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。