0
我知道我錯過了一些非常簡單的東西,但是這讓我很困擾。 我想測試的Prolog將如何處理以下Prolog X = f(X)。 (X)
X=f(X).
X=Z:- X==Y,Y==Z.
?- X==f(f(X)).
但顯然我錯過了爲什?-X = F(X)非常基本的。返回「false」。 請你指出我錯在哪裏。
謝謝!
我知道我錯過了一些非常簡單的東西,但是這讓我很困擾。 我想測試的Prolog將如何處理以下Prolog X = f(X)。 (X)
X=f(X).
X=Z:- X==Y,Y==Z.
?- X==f(f(X)).
但顯然我錯過了爲什?-X = F(X)非常基本的。返回「false」。 請你指出我錯在哪裏。
謝謝!
使用=/2
的統一:
?- X = X.
true.
?- X = f(X).
X = f(X).
?- f(f(X)) = X.
X = f(f(X)).
?- X = Y, X = Z.
X = Y, Y = Z.
只要你有一個自由變量在統一的一面,它一定會成功。
等效與==/2
不同。它只成功,如果兩邊都是相同的變量或相同的地值:
?- X == X.
true.
?- Y == Z.
false.
?- X = Y, X = Z, Y == Z.
X = Y, Y = Z.
?- X == 3.
false.
?- X = 3, X == 3.
X = 3.
非常感謝! –
對於我來說,' - X = F(X).'在頂層成功,並回答'X = F (X).'當然,統一('=/2')和等價('==/2')不是一回事!你需要在你的問題上更清楚一點,你的問題是什麼,你的諮詢計劃是什麼,以及你想要達到的目標。 – 2016-08-31 04:04:23