【问题标题】:Change the Return response of Prolog更改 Prolog 的返回响应
【发布时间】:2013-03-03 18:51:46
【问题描述】:

我是 prolog 编程的新手。

我想更改 prolog 程序返回的值,使其返回 true / false 而不是标准的 yes 或 no。

考虑一个非常简单的例子: 例如。简单。P

node(1).

isNode(X) : node(X)

在 prolog 命令行中,如果我输入 isNode(1),它会返回 yes,例如:

isNode(1).

yes

我的问题是:

如何将其从 yes 更改为 true?

【问题讨论】:

  • 严格来说,这不是你用你的程序控制的部分,而是你正在使用的Prolog系统的用户界面。这样的接口,通常称为REPL (Read,Eval,Print,Loop),或者更常见的是console,它是允许程序员控制 Prolog 的“内部工作”的更简单的方法。作为一名程序员,您应该为您的程序定义您的自己的界面,从而以真/假或您认为更好的方式回答用户输入。
  • 这取决于您使用的 Prolog 方言。例如,SWI Prolog 有时不报告任何内容,有时它会显示“true”。
  • @AlexanderSerebrenik:SWI 什么时候不报告任何内容?据我了解,它总是会产生答案。
  • @false:它会产生一个答案,但一旦显示答案,它不一定添加“是”或:真。

标签: prolog prolog-toplevel xsb


【解决方案1】:

Prolog 尝试查找您的查询的证明。如果您的查询有变量,它会打印一个使它们为真的值。

问:有没有偶数的素数? A: 是的 - 2 是偶数和素数

只要你打字,它就会不断地给你更多的证据; 最终它会用完并响应 假的。

问:有没有偶数的素数? A:是的 - 2 是偶数和素数 问:还有吗? 答:错误。

您想要的是让您的程序执行输出。有许多库谓词可以做到这一点。最灵活的是 format/2

myprogram :-
   my_old_program, !,
   format('yup, that sure is right!~n', []).
myprogram :-
   format('nope, nope, no way in heck!~n', []).

【讨论】:

    猜你喜欢
    • 2019-11-10
    • 2017-03-23
    • 2017-01-15
    • 2019-06-20
    • 1970-01-01
    • 2019-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多