我是新來的學習序言,我想知道,如果我們有像如何在prolog過程中的最後一個參數之後插入額外的參數?
father("Nic","Adam").
一些程序,我想寫這將增加新的價值,這
father("Nic","Adam","something"..)
功能我怎樣才能做到這一點?使用列表?或者是什麼?
我是新來的學習序言,我想知道,如果我們有像如何在prolog過程中的最後一個參數之後插入額外的參數?
father("Nic","Adam").
一些程序,我想寫這將增加新的價值,這
father("Nic","Adam","something"..)
功能我怎樣才能做到這一點?使用列表?或者是什麼?
簡單地寫
father(nic, adam).
作謂語已經定義它。它就像陳述一個事實:你聲明是father(nic, adam)
是true
,則可以執行這些預期結果如下:
?- father(nic, adam).
Yes
?- father(nic, X).
X = adam
快速回答:你不想這樣做。
較長的回答是:father/2
謂詞具有一定的意義,即對father(X,Y)
X
是Y
父親。一個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].