gpt4 book ai didi

macos - Prolog错误的编译?

转载 作者:行者123 更新时间:2023-12-02 10:45:16 25 4
gpt4 key购买 nike

我对序言很陌生。尝试在尽可能短的时间内尽可能多地学习它。任何帮助是极大的赞赏。我正在使用MacOS Sierra。

我正在尝试输入以下行:

nextto(_A,_B). 
nextto(_B,_C).

当我测试使用时,prolog命令窗口并执行以下命令:
?- nextto(A,C).

它不应该返回假吗?

因为,我的编译结果为true,如下所示:
?- nextto(A,C).
true

最佳答案

在序言中,_被视为类似于大写字母,并且它具有自己的特殊含义,即指定匿名变量,因此_A,_B是(匿名)变量(在序言中以大写字母开头的都是变量,而不是原子)。您的条款:

nextto(_A,_B). nextto(_B,_C).

实际上意味着谓词nexxto以两个变量成功。因此,当您查询neexto(A,C)时。它返回true。
如果查询next(a,b),它也会返回true。现在,a,b是原子而不是变量,因为它将检查(a,b)旁是否有子句。在您的条款中。但是,正如我在上面说的那样,您的子句在_A,_B的每次统一中均成功。另外,由于谓词nexxto总是成功,因此仅编写one子句就可以得到相同的结果:
nextto(_A,_B). 

代替 :
nextto(_A,_B). nextto(_B,_C).

关于macos - Prolog错误的编译?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39614097/

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