我想進一步理解Prolog,以及它如何處理列表統一。所以我堅持這個例子,我知道答案,因爲我執行的代碼,但我不明白它是如何工作的。序言列表統一
[X,a,X,f(X,a)|Y] = [Z,Z|Y]
答案是:
X=Z
Z=a
Y=_
L=[a,f(a,a)|Y]
我知道,頭與其他頭相結合,所以如果我做出一些改變,像這樣的:
let C=[X,a,X,f(X,a)]
let D=[Z,Z]
和統一,應去這裏:
[C|Y]=[D|L]
所以Y必須等於L,而不是_,對不對?有人能更好地解釋我並糾正我的錯誤嗎?
在SWI-Prolog上,它給出了'X = Z,Z = a,Y = [a,f(a,a)| Y]'這是我預期的結果。 – hynner
L從哪裏來?在SWI-Prolog上,它給出L = [a,f(a,a)| Y],但我不知道如何提出這個解決方案。 – Teo
正如我所說,在我的SWI-Prolog上沒有L :-) – hynner