如果我有以下情况:
friends(tim,joe).
如果我走:
?- friends(X,Y).
我会得到:
X=tim
Y=joe
我必须在不添加任何新事实的情况下打印以下内容
X=tim
Y=joe
X=joe
Y=tim
您将不得不添加一个新规则:
are_friends(X,Y):- friends(X,Y).
are_friends(X,Y):- friends(Y,X).
然后你问:
?- are_friends(X,Y).
Prolog会回答
X=tim, Y=joe _
它将等待您的进一步命令。如果按;
,它将打印下一个解决方案:
X=tim, Y=joe ;
X=joe, Y=tim _
为了只显示结果两次——而不是以适当的 Prolog 方式产生它们——我们可以写
show_friends :-
friends(X,Y),
write('X='), write(...), write(', Y='), write(...), nl,
write('X='), write(...), write(', Y='), write(...), nl,
fail.
但这真的,真的,真的只是假装。呃。你填空。