小编Joh*_*old的帖子

序言 f(X) :- X==[]

当我有序言程序时

f(X) :- X==[].
Run Code Online (Sandbox Code Playgroud)

输出是

|:-f(X).
false.
:-f([]).
true.
Run Code Online (Sandbox Code Playgroud)

在第一个输出 prolog 中声称没有X,所以这f(X)是真的。

f([])确实如此,所以序言应该说X=[]。作为第一个查询的答案。

为什么是这样?我该如何解决。

a(X,X).
b(A,B) :- A==X,B==X.
Run Code Online (Sandbox Code Playgroud)

还有一个更严重的问题:

|:-a([a],[a]).
true.
:-b([a],[a]).
false.
Run Code Online (Sandbox Code Playgroud)

我相信,ab是完全一样的语句,只是有不同的写法。

IDE 声称这A==X总是错误的,所以我想我对变量在 prolog 中的工作方式有严重的误解。

prolog

1
推荐指数
1
解决办法
42
查看次数

标签 统计

prolog ×1