如果我有以下内容:
friends(tim,joe).
如果我去:
?- friends(X,Y).
我会得到:
X=tim
Y=joe
如果不添加任何新事实,我需要打印以下内容
X=tim
Y=joe
X=joe
Y=tim
答案 0 :(得分:1)
您必须添加新的规则:
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.
但实际上,真的, 真的 只是 伪造 。 Ughgh。你填空了。