В чем здесь ошибка, есть проблемы, когда первый параметр заключен в скобки, есть конфликт приоритетов с оператором запятой.
Я не могу понять это, у вас есть какие-либоидеи?
:-op(400, yfx, [eq]).
X*Y eq R:- number(X),number(Y),R is X*Y. % eq definition
:-2*3 eq R, writeln([2*3 eq R]).
:-(2*4) eq R, writeln([2*4 eq R]). %problems when the parameters are wrapped
:-eq(2*5,R), writeln([2*5 eq R]).
:-eq((2*6),R), writeln([2*6 eq R]). %fine here
Вывод:
[2*3 eq 6]
ERROR: c:/users/cravs/dropbox/programming/notes prolog/prolog scripts/identities2.pl:39:
Full stop in clause-body? Cannot redefine ,/2
[2*5 eq 10]
[2*6 eq 12]