Я хотел бы написать модуль, который экспортирует предикат, где пользователь должен иметь возможность доступа к предикату p/1
в качестве префиксного оператора.Я определил следующий модуль:
:- module(lala, [p/1]).
:- op(500, fy, [p]).
p(comment).
p(ca).
p(va).
и загружаю его сейчас с помощью:
?- use_module(lala).
true.
К сожалению, запрос не выполняется:
?- p X.
ERROR: Syntax error: Operator expected
ERROR: p
ERROR: ** here **
ERROR: X .
После установки оператораправильно, все работает:
?- op(500, fy, [p]).
true.
?- p X.
X = comment ;
X = ca ;
X = va.
Я использовал SWI Prolog для вывода, но та же проблема возникает и в YAP (GNU Prolog не поддерживает модули).Есть ли способ, которым пользователю не нужно самим устанавливать приоритет?