Как использовать op / 3 внутри файла - PullRequest
0 голосов
/ 21 февраля 2019

Я пытаюсь определить оператор в файле, используя op/3.Вот так

is_in(Thing, Place):-
  location(Thing, Place).

op(35, xfx, is_in).

Но когда я consult/1 файл в repl, я получаю исключение

No permission to modify static procedure `op/3'

Я пытался использовать директиву dynamic, но это приводит к той же ошибке.

Выполнение op(35, xfx, is_in). в репл-работах.

1 Ответ

0 голосов
/ 21 февраля 2019

Проблема в том, что вы пытаетесь переопределить предикат op/3 вместо объявления нового оператора.

Чтобы объявить новый оператор при просмотре файла, вы должны добавить директиву в вашей программе:

:-op(35, xfx, is_in).

Обратите внимание, что оператор не будет доступен до директивы, поэтому вы должны добавить директиву над его использованием в файле.

...