Что будет в результате чего-то вроде:
p(X,Y) :- q(X).
p(X,Y) :- r(Y).
q(a).
r(b).
У меня нет под рукой компилятора Prolog, поэтому я не могу проверить, что произойдет, если вы спросите p(X,Y)
. Будет ли код даже скомпилироваться? p
вернет два ответа, каждый с одной из переменных без привязки?
В сценарии реального мира, я не думаю, что p(X,Y)
имело бы много смысла (вероятно, лучше было бы, чтобы p(X)
следовало из q(X)
или r(X)
), но мне интересно на самом деле происходит здесь, и на периферии, что должно произойти в таком вырожденном случае.