gpt4 book ai didi

prolog - Prolog中的 "false"和 "no"有什么区别

转载 作者:行者123 更新时间:2023-12-04 17:33:48 24 4
gpt4 key购买 nike

我是跟着书Programming in Prolog: Using the ISO Standard开始学习Prolog的.在语言介绍的第 7 页,他们做出了断言:“在 Prolog 中,答案 用于表示没有与问题一致。重要的是要记住 是不等于假”。那么为什么SWI-Prolog使用 falsetrue声明而不是 yesno ?

最佳答案

首先,ISO 标准 (ISO/IEC 13211-1:1995) 没有定义
一个顶级循环。在 1 Scope 中,它写道:

NOTE — This part of ISO/IEC 13211 does not specify:

...

f) the user environment (top level loop, debugger, library
system, editor, compiler etc.) of a Prolog processor.



传统上,查询的答案是用是或否来回答的。如果是,则显示答案替换(如果存在)。

今天,随着答案中出现越来越多的约束,传统的顶级循环变得有点难以使用。正确答案是什么 ?- dif(X,a). ?它不能是 ,它可能是 也许 ,首先被 Jaffar et al.s CLP(R) 使用.但很多时候人们想要重复使用答案。
?- dif(X,a).
dif(X,a).

?- dif(b,a).
true.

?- true.
true.

继 Prolog IV 的开创性顶层之后,SWI 的想法是生成文本作为答案,以便您可以将其粘贴回以获得完全相同的结果。以这种方式,答案的语法在某种程度上被指定 - 它必须是有效的 Prolog 文本。

因此,如果不再有是,为什么不应该有?出于这个原因,SWI 给出了 false.作为答案。在 SWI 之前, Prolog IV确实回复了 false .例如,请注意 SWI 中的以下固定点:
?- true; false.
true ;
false.

因此,即使是这个微小的细节也会保留在答案中。而在 Prolog IV 中,这被折叠为 true因为 Prolog IV 一举显示了所有答案。
?- true ; false.

true.

有关答案的更多信息, see this .

关于prolog - Prolog中的 "false"和 "no"有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31164078/

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