gpt4 book ai didi

list - Prolog 成员/2 谓词

转载 作者:行者123 更新时间:2023-12-01 15:21:18 25 4
gpt4 key购买 nike

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

有没有办法解决这个问题?

任何帮助将不胜感激。

最佳答案

Why does Prolog answer false to: member([5], [2, 5]).?

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

?- use_module(diadem).
true.

?- member([5], [2,5]).? Expl.
Expl = member([_|_], [2, 5])
; ... .

它不仅失败了,而且泛化也失败了:[5] 不是一个只有一个元素 5 的列表,我们现在至少有一个元素——不管是哪个。所以我们可以将 Expl 的值作为一个仍然失败的查询。因此,剩下的目标中的某些东西一定是罪魁祸首。

?- member([_|_], [2, 5]).
false.

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

?- member([5], [2, Any]).
Any = [5].

现在成功了!

关于list - Prolog 成员/2 谓词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43880417/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com