Я пытаюсь скомпилировать код раку, который я видел на https://replit.com/languages/raku . Код взят из Почему Раку сообщает "два термина подряд", когда я определяю новый оператор?.
Это начинается так:
unit module Format;
use List::Util;
...
Не удается скомпилировать с:
raku ./main.raku
===SORRY!=== Error while compiling /home/runner/l4gp3hvdnhd/./main.raku
Could not find List::Util in:
inst#/home/runner/.raku
inst#/opt/rakudo-pkg/share/perl6/site
inst#/opt/rakudo-pkg/share/perl6/vendor
inst#/opt/rakudo-pkg/share/perl6/core
ap#
nqp#
perl5#
at /home/runner/l4gp3hvdnhd/./main.raku:3
exit status 1
С другой стороны, я вижу, что это правильный модуль - https://raku.land/zef:lizmat/List::Util.
Почему это не удается?
Я использую онлайн-компилятор — replit.com/languages/raku. Означает ли это, что этот код нельзя использовать с компилятором онлайн-площадки?
Боюсь, что так. Кроме того, похоже, что при воспроизведении используется версия Raku почти двухлетней давности (v2021.03). Так что, возможно, это не лучшее место, чтобы попробовать Раку.
Немного не согласен с Лиз. Совсем немного, но вы можете использовать этот код с replit. По крайней мере, вы можете, если вы достаточно терпеливы, чтобы дождаться полнолуния и быть добрыми к своим гремлинам. Для более полного объяснения см. мой ответ.





У вас не установлен List::Util. Поскольку вы используете онлайн-переводчик, у вас, скорее всего, возникнут большие проблемы с этим. Вместо этого я рекомендую установить Raku на ваш локальный компьютер с помощью rakubrew.
Затем выполните следующие команды:
rakubrew build # Make sure to follow the instructions at the end
rakubrew build-zef
zef install List::Util
Теперь вы сможете запустить свой код на локальном компьютере, и у вас будет доступ к библиотеке List::Util.
TL;DR Запусти zef install --/test List::Util в консоли, поставь use lib '.'; в верхней части своего Раку main.raku и беги, а не ходи, со своей программой, прежде чем гремлины радостно превратят ваши усилия в напрасные. Или, может быть, просто послушать Лиз и Роули.
Как отметили Лиз и Роули, вам необходимо установить List::Util.
Но хотя я в значительной степени согласен с ними на практике (может быть сложно использовать повторение, чтобы сделать то, что вы пытаетесь сделать), я думаю, что другой ответ, дополняющий их, может быть полезен.
Один из способов, которым Replit пытается отличиться от других онлайн-оценщиков, заключается в том, что он пытается быть похожим на полноценную среду разработки.
На самом деле это только начало их амбициозного проекта, и нищие не могут выбирать (если вы не платите, трудно жаловаться, если что-то идет не так, как вам хотелось бы), но это особенно важно для этого. Стоит отметить, что у него есть средства консоли / оболочки, и они установили Rakudo Star или, возможно, что-то подобное, включая менеджер пакетов Raku, которым почти все пользуются (zef).
Таким образом, эта команда, которую я только что запустил в консоли повторения нового сеанса раку, сработала:
zef install --/test List::Util;
(--/test говорит zef не запускать тесты. У меня есть только бесплатная учетная запись, и похоже, что replit убил процесс zef, когда я запускал только 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.
Но теперь загвоздка. Пока я писал этот ответ, произошло ожидаемое. Мое подключение к Интернету на мгновение оборвалось, повтор перезагрузил сеанс, и, хотя мой main.raku код был спасен, и List::Util, и моя история консоли исчезли, поэтому мне пришлось снова вставить команду установки и перезапустить ее, чтобы снова установить модуль.
Это всего лишь магия одноразового контейнера, и до сих пор было сделано так много повторений, чтобы симуляция реальной полной локальной среды разработки действительно работала.
Может быть, если ваше интернет-соединение стабильно, и/или вы используете платную учетную запись, и/или сейчас полнолуние, все сработает. Или, может быть, вам лучше последовать совету Роули.
Говоря об этом (я имею в виду совет Роули настроить среду разработки Raku локально), если вы устанавливаете локально, вы также можете установить потрясающую бесплатную версию CommaIDE.
Вы действительно установили модуль с помощью
zef?zef install List::Util?