我正在使用 SWI Prolog 为大学考试学习 Prolog,我对这个简单的程序有一些疑问,它实现了不同的谓词,如果两个元素不同(如果它们不匹配),则说 TRUE,如果它们匹配,则说 FALSE。
这是代码:
different(X,X) :- !,
fail.
diferent(_,_).
问题是,如果我尝试在 Prolog shell 中执行以下查询,我总是会得到 FALSE:
[debug] 10 ?- different(a,b).
false.
[debug] 11 ?- different(a,a).
false.
如您所见,第一个查询必须说 TRUE,因为 a 与 b 不匹配
为什么?