知道prolog的人的简单错误。没有完全停止导致错误

时间:2012-10-30 12:35:16

标签: prolog

likes(a,b).
likes(b,d).
likes(c,e).
likes(d,f).
likes(e,h).

likes_trans(X,Y) :- likes(X,Z),likes_trans(Z,Y).
likes_trans(X,Y) :- likes(X,Y).
listfriends(X,R) :- findall(Y,likes_trans(X,Y),R).
likes_both(X,Y,R) := listfriends(X,P), listfriends(Y,S), member(R,P), member(S,P).

为什么最后一行'likes_both'给我错误(加载文件时)

  

完全停止子句体?无法重新定义

任何建议都非常感谢,我知道我在这里缺少一些基本的东西。

1 个答案:

答案 0 :(得分:4)

看起来最后一行的:=应该替换为:-

likes_both(X,Y,R) :- listfriends(X,P), listfriends(Y,S), member(R,P), member(S,P).
/*  Here ---------^^ */