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