Я определим оператор следующим образом:SWI-Prolog - Сбой в Утверждают
:- op(500, xfx, =>).
Когда я пытаюсь что-то вроде:
assert(a => b).
Пролог выдает ошибку, что не говорит «Нет разрешения на изменение static_procedure (=>)/2' .
Любое решение?
Nit: Выше недопустимый синтаксис (попробуйте GNU, чтобы это увидеть). Это должно быть '(=>)/2' – false
@false: ну, у меня не было никакого переводчика, чтобы проверить это. Спасибо, я отредактирую :) – m09
Это всегда так: индикатор предиката должен иметь скобки, если он имеет соответствующее определение оператора. Таким образом, это '(;)/2' и' (',')/2'. Кавычки служат только для того, чтобы разграничить токен, например '' a b'', которые необходимы независимо от объявлений операторов. – false