2016-08-30 88 views
0

我知道我錯過了一些非常簡單的東西,但是這讓我很困擾。 我想測試的Prolog將如何處理以下Prolog X = f(X)。 (X)

X=f(X). 
    X=Z:- X==Y,Y==Z. 
?- X==f(f(X)). 

但顯然我錯過了爲什?-X = F(X)非常基本的。返回「false」。 請你指出我錯在哪裏。

謝謝!

+0

對於我來說,' - X = F(X).'在頂層成功,並回答'X = F (X).'當然,統一('=/2')和等價('==/2')不是一回事!你需要在你的問題上更清楚一點,你的問題是什麼,你的諮詢計劃是什麼,以及你想要達到的目標。 – 2016-08-31 04:04:23

回答

0

使用=/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. 
+0

非常感謝! –

相關問題