我知道这是一个有点愚蠢的问题,但我现在真的很绝望,因为我无法找到构建它的方法。我总是得到这个错误
ERROR: call/2: Undefined procedure: main/1
ERROR: However, there are definitions for:
ERROR: main/0
即使我尝试了
father(ahmad,samer).
father(ahmad,lolo).
father(ahmad,koko).
grandfather(X,Y):-
father(U,X),
father(Y,U).
main :- father(ahmad, X), writef('%t\n', [X]).
有人可以帮助我以正确的方式做到这一点吗?
答案 0 :(得分:5)
对我来说效果很好。
只需输入main.
不要忘记.
,否则它将无法运行。
这是我得到的
2 ?- main.
samer
true ;
lolo
true ;
koko
true.
true
后;
键入{而不是按 Enter 按钮,如果要显示所有三个名称。如果按 Enter ,则只显示第一个名称。
从您的代码中我发现ahmad
是父亲,所以关于grandfather
查询,我认为我必须这样:
granfather(X,Y):- father(X,U),father(U,Y).
因为在father
查询中,father
位于左侧