我正在尝试熟悉Prolog并运行一个非常非常简单的程序。
father(tom, john).
father(jerry, john).
sibling(A, B) :-father(A, F), father(B, F).
当我运行?- sibling(tom,jerry)
时
我期望为True,但是正在接收过程“?-A”不存在。
有语法错误吗?还是以其他方式运行查询?
答案 0 :(得分:1)
因为您没有任何知识!您在father
谓词中使用大写字母。如您所知,变量使用大写字母。因此,您需要编写如下内容:
father(w, c).
father(g, c).
sibling(A, B) :-father(A, F), father(B, F).
此外,请注意,根据您的定义,w
也是sibling
(本身)的w
!另外,如果您想以语义方式实现它,则可以像下面这样重写它:
father(w, c).
father(g, c).
sibling(A, B) :- A \== B, father(A, F), father(B, F).