在回复我最近的博客文章时,Markus H. 提供了一种非常简洁的代码替代方案,即:
很遗憾,我无法让这个"开箱即用"地工作并出现了以下错误:
dd $_ for (4, 4.25, 108 – (815 – 1500 / * ) / * … *)[^30].kv
很遗憾,我无法让这个"开箱即用"地工作并出现了以下错误:
Confused
at /Users/stephenroe/Dropbox/RakuStuff/mullerrec/./mullerrec3.raku:27
------> dd $_ for (4, 4.25, 108⏏ – (815 – 1500 / * ) / * … *)[^30].kv
expecting any of:
infix
infix stopper
statement end
statement modifier
statement modifier loop
我该如何解决这个问题?
这是我可以运行的代码(是的,我的风格有点不同,但没关系):
sub f(\y,\z) {
108 - ( (815 - 1500/z ) / y )
}
dd $_ for (4, 4.25, -> \z,\y {f(y,z)} … ∞)[^30].kv;
作为后续,我认为我需要交换f的参数,但Markus还没有这样做,谁是正确的?我很想知道这是否是一个陷阱,那么问题是“如何通过消耗的星号来反转顺序?”
或者可能像这样:
dd $_ for (4, 4.25, f(^z,^y) … ∞)[^30].kv; #not legal
4, 4.25.FatRat, { 108 - (815 - 1500 / $^foo ) / $^bar } … *
将会反转参数/参数列表,因为bar
在字典序中排在foo
之前。 - raiph$*RAT-UPGRADE-CLASS
动态变量,允许指示如何处理从Rat
升级的方式:https://github.com/rakudo/rakudo/pull/4299。有了这个,当分母超过64位时,您可以在代码中省略`4.FatRat`,并添加`my $*RAT-UPGRADE-CLASS = FatRat(这将导致升级到
FatRat而不是降级到
Num`)。 - Elizabeth Mattijsen