my @g = (1,2,3,4);
say reduce {is-prime}, @g; # ==> gives error
say reduce {is-prime *}, @g; #==> gives error
say reduce {is-prime}, (1,2,3,4); # ==> gives error
say so is-prime @g.all; # ==> gives error
如何检查列表中的所有元素是否在 Raku 中都是素数?
最佳答案
上面的答案都很有帮助,但它们无法解释为什么您的解决方案不起作用。基本上reduce不会将函数(在您的情况下,is-prime)应用于列表的每个成员。你要map为了那个原因。错误说
Calling is-prime() will never work with signature of the proto ($, *%)
因为
reduce
需要一个中缀,因此是二进制、函数或带有两个参数的函数;它所做的是将它们应用于第一对元素,然后应用于结果和第三个元素,依此类推。由于类似的原因,最后一条语句不起作用:您使用列表参数调用 is-prime,而不是单个参数。
关于mapreduce - 检查列表的所有元素是否在 Raku 中都是素数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62246666/