2

我知道这是一个愚蠢的问题,但我现在真的很绝望,因为我找不到构建它的方法。我总是收到这个错误

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]).

那么有人可以帮助我以正确的方式做到这一点吗?

4

1 回答 1

6

对我来说效果很好。

只需键入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,左侧是

于 2013-10-29T08:26:48.863 回答