Я недавно изучаю Пролог, и мне кажется, что три типа, используемые для определения инфиксных операторов, сбивают с толку.
В чем разница между xfx, xfy и yfx при указании типа оператора? Я погуглил о проблеме и не нашел ничего полезного.
Я попробовал ввести в Прологе следующие коды:
:- op(500,yfx,is_alive).
is_alive(A,B) :- display([A,B]).
:- op(500,xfy,is_alive2).
is_alive2(A,B) :- display([A,B]).
:- op(500,xfx,is_alive3).
is_alive3(A,B) :- display([A,B]).
и вывод:
| ?- 1 is_alive 2.
'.'(1,'.'(2,[]))
yes
| ?- 1 is_alive2 2.
'.'(1,'.'(2,[]))
yes
| ?- 1 is_alive3 2.
'.'(1,'.'(2,[]))
yes
Результаты не показали мне никакой разницы.