Создание нового оператора

Я пытаюсь сделать логический оператор отрицания.

¬ True;

multi sub prefix:<¬> ($n) {
        return not $n;
}

Когда я запускаю вышеупомянутую программу, она возвращает эту ошибку:

$ perl6 test.pl6  
===SORRY!=== Error while compiling /home/devXYZ/test.pl6 Bogus statement at /home/devXYZ/test.pl6:1
------> <BOL>⏏¬ True;
expecting any of:
    prefix
    term

Кто-нибудь знает, в чем может быть причина?

1 ответ

Решение

Объявление нового оператора должно появиться до его использования. Изменение программы на:

multi sub prefix:<¬> ($n) {
    return not $n;
}
say ¬ True;

Делает это работает нормально.

Perl 6 имеет строгие правила однопроходного разбора. Следовательно, порядок имеет значение для всего, что влияет на анализируемый язык, например, путем введения типа или нового оператора.

Другие вопросы по тегам