2013-10-29 24 views
2

我知道這是一個有點愚蠢的問題,但我現在真的絕望了,因爲我無法找到構建它的方式。我總是得到這個錯誤SWI-Prolog插件上的崇高構建錯誤

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

所以有人可以幫我做的正確方法?

+1

你怎麼叫main?這是問題... – CapelliC

回答

5

對我來說工作得很好。

只是鍵入main. 不要忘記.,否則它不會運行。 這裏是我得到

2 ?- main. 
samer 
true ; 
lolo 
true ; 
koko 
true. 

true類型,而不是;如果要顯示所有三個名字輸入按鈕。如果按輸入,則只會顯示第一個名稱。

從你的代碼我想通了,ahmad是父親,所以對grandfather查詢,我覺得我已經是這個樣子:

granfather(X,Y):- father(X,U),father(U,Y). 

由於您father查詢father在左

+0

謝謝,它的工作,但我必須寫這樣的'主要: - 父親(ahmad,X),writef('%t \ n',[X])'我的意思是,需要像eclipse PDT中那樣處理它,換句話說,我可以在哪裏編寫查詢? – Tarek

+0

你是什麼意思'你在哪裏可以寫查詢'? 你的意思是你可以在哪裏編寫代碼? – Shevliaskovic

+0

還有另一種編寫代碼的方式,不用寫'main'。只需編寫父親和祖父的查詢,然後運行程序並輸入'father(ahmad,X)',您將得到相同的結果。 – Shevliaskovic