2010-03-24 36 views

回答

0

簡單地寫

father(nic, adam). 

作謂語已經定義它。它就像陳述一個事實:你聲明father(nic, adam)true,則可以執行這些預期結果如下:

?- father(nic, adam). 
Yes 

?- father(nic, X). 
X = adam 
1

快速回答:你不想這樣做。

較長的回答是:father/2謂詞具有一定的意義,即對father(X,Y)XY父親。一個father/3謂詞完全不同。你想用第三個參數達到什麼目的?通常,您使用附加規則,這些規則從father/2謂詞中派生出事物,或者甚至將其解析爲father/3參數。

主要問題仍然存在:第三個參數的目的是什麼?如果您希望您的決議適用於某些特定的第三個參數,例如基於相應的father/2謂詞的存在,則可以執行father(X, Y, 'something') :- father(X,Y),如果您有相應的事實,它將成功。注:請學習您的術語。在Prolog中我們不會說程序而我們不會寫函數。相反,我們有謂詞事實規則 ...

PPS:我不知道你正在使用的Prolog的實現,但你可能想使用'something'而不是"something"。後者通常創建一個字符代碼列表,而不是一個字符串:

?- X = 'some'. 
X = some. 

?- X = "some". 
X = [115, 111, 109, 101]. 
相關問題