找不到列表::Util

sas*_*alm 5 raku

我正在尝试编译一些我在https://replit.com/languages/raku上看到的 raku 代码。代码来自为什么当我定义新运算符时 Raku 报告“连续两个术语”?

\n

它是这样开始的:

\n
unit module Format;\nuse List::Util;\n...\n
Run Code Online (Sandbox Code Playgroud)\n

它无法编译:

\n
\xee\xba\xa7 raku ./main.raku\n===SORRY!=== Error while compiling /home/runner/l4gp3hvdnhd/./main.raku\nCould not find List::Util in:\n    inst#/home/runner/.raku\n    inst#/opt/rakudo-pkg/share/perl6/site\n    inst#/opt/rakudo-pkg/share/perl6/vendor\n    inst#/opt/rakudo-pkg/share/perl6/core\n    ap#\n    nqp#\n    perl5#\nat /home/runner/l4gp3hvdnhd/./main.raku:3\nexit status 1\n
Run Code Online (Sandbox Code Playgroud)\n

另一方面,我看到这是一个有效的模块 - https://raku.land/zef:lizmat/List::Util

\n

为什么会失败?

\n

rai*_*iph 4

TL;DRzef install --/test List::Util在控制台中运行,将use lib '.';Raku 放在顶部main.raku,然后用你的程序运行,而不是行走,然后小妖怪就会兴高采烈地让你的努力白费。或者也许只是听听莉兹和罗利的意见。


正如 Liz 和 Rawley 所指出的,您需要List::Util安装。

但是,虽然我在实践中基本上同意他们的观点(使用 replit 来做你想做的事情可能很痛苦),但我认为不同的回应来补充他们的回应可能会有所帮助。


replit 试图将自己与其他在线评估器区分开来的方式之一是,它试图类似于完整的开发环境。

事实上,他们雄心勃勃的项目还处于早期阶段,乞丐不能成为选择者(如果你不付钱,如果事情没有按照你想要的方式进行,就很难抱怨),但与此特别相关,所以它值得注意的是,它确实有控制台/shell 设施,并且他们安装了 Rakudo Star,或者可能只是类似的东西,包括几乎每个人都使用的 Raku 包管理器 ( zef)。

因此,我刚刚在新 raku 会话的 replit 控制台中运行的这个命令有效:

zef install --/test List::Util;
Run Code Online (Sandbox Code Playgroud)

--/test告诉我zef不要运行测试。我只有一个免费帐户,zef当我在测试运行期间运行时,它看起来像是 replit Killed 的进程zef install List::Util。大概它们花费的时间太长,但我不知道。)

然后这main.raku也起作用了:

use lib '.';              # Tell Raku(do) libs are in current directory.
use List::Util <notall>;  # Load and import `notall` from module.
say notall { 42 }, 99;    # Try it.
Run Code Online (Sandbox Code Playgroud)

但现在遇到了麻烦。当我撰写这个答案时,预期的事情发生了。我的互联网连接暂时中断,replit 重新启动了会话,当我的main.raku代码被拯救时,两者List::Util和我的控制台历史记录都消失了,所以我必须再次粘贴安装命令并重新运行它以再次安装模块。

这一切都只是一次性容器魔法,到目前为止,只有这么多的 replit 才能使真正的完整本地开发环境的模拟真正发挥作用。

也许如果您的互联网连接坚如磐石和/或您使用的是付费重复帐户和/或满月,一切都会顺利。或者也许您最好听从罗利的建议。


说到这里(我的意思是 Rawley 建议在本地设置 Raku 开发环境),如果您确实在本地安装,您还可以安装很棒的免费版本CommaIDE