Enr*_*ani 5 prolog swi-prolog prolog-toplevel
我开始学习Prolog之后的Prolog 编程:使用ISO标准.在介绍到,他们所作的断言语言的7页:"在序言答案没有被用来指没有与问题相结合,以记住,这是非常重要的.没有是不一样的错误." 那么为什么SWI-Prolog
使用false
和true
语句代替yes
或no
?
首先,ISO标准(ISO/IEC 13211-1:1995)没有定义顶层循环.在1范围内,它写道:
注 - ISO/IEC 13211的本部分未规定:
...
f)
Prolog处理器的用户环境(顶级循环,调试器,库系统,编辑器,编译器等).
传统上,查询的答案已回答是或否.如果是,则显示答案替换(如果存在).
今天,随着答案中出现越来越多的约束,传统的顶级循环变得有点麻烦.什么是正确的答案
?- dif(X,a).
?它不可能是肯定的,它可能是一种可能,它首先由Jaffar等人使用,CLP(R).但很多时候,人们想要重复使用答案.
?- dif(X,a).
dif(X,a).
?- dif(b,a).
true.
?- true.
true.
Run Code Online (Sandbox Code Playgroud)
SWI中的想法是将文本作为答案生成,以便您可以将其粘贴回来以获得完全相同的结果.以这种方式,答案的语法在某种程度上被指定 - 它必须是有效的Prolog文本.
所以,如果不再是,为什么不存在呢?出于这个原因,SWI给出false.
了答案.在SWI之前,Prolog IV确实做出了回应false
.请注意,例如SWI中的以下修复点:
?- true; false.
true ;
false.
Run Code Online (Sandbox Code Playgroud)
所以即使是这个微小的细节仍保留在答案中.然而在Prolog IV中,true
由于Prolog IV一下子显示了所有答案,因此它已经崩溃了.
?- true ; false.
true.
Run Code Online (Sandbox Code Playgroud)
有关答案的更多信息,请参阅此处.