Prolog成员/ 2谓词

tsu*_*uoy 2 list prolog member

为什么prolog回答错误:member([5], [2, 5]).

有办法解决它吗?

任何帮助将不胜感激.

fal*_*lse 5

Prolog为什么回答错误:member([5], [2, 5]).

我们问Prolog为什么!下载library(diadem)到您的工作目录并:

?- use_module(diadem).
   true.

?- member([5], [2,5]).? Expl.
   Expl = member([_|_], [2, 5])
;  ...
Run Code Online (Sandbox Code Playgroud)

它不仅失败而且失败也失败了:而不是[5]具有单个元素5的列表,我们现在只需要至少一个元素 - 无论哪个.因此我们可以将值Expl作为仍然失败的查询.因此,剩余目标中的某些东西必定是罪魁祸首.

?- member([_|_], [2, 5]).
   false.
Run Code Online (Sandbox Code Playgroud)

还要注意没有概括的内容:这两个元素仍在这里!如果它们是变量,查询就会成功!稍微概括一下查询:

?- member([5], [2, Any]).
   Any = [5].
Run Code Online (Sandbox Code Playgroud)

现在它成功了!