Prolog Start子句仅在输入之后

Prolog Start子句仅在输入之后,prolog,built-in,Prolog,Built In,有没有人知道,当终端输入时,一种内置的或任何其他的方式只会使prolog转到下一个子句 例如,给出查询的人必须点击y按钮 匹配查询后转到下一个子句。这就是所谓的香草元解释器(我抄袭自): 您可以通过添加谓词以在继续之前请求输入来扩展此功能以等待某些输入: confirm :- write('Continue? [y/n] '), flush_output, get_char(y). 现在将第二条替换为: solve((A,B)) :- !, solve(A), confirm, solve(B

有没有人知道,当终端输入时,一种内置的或任何其他的方式只会使prolog转到下一个子句

例如,给出查询的人必须点击y按钮
匹配查询后转到下一个子句。

这就是所谓的香草元解释器(我抄袭自):

您可以通过添加谓词以在继续之前请求输入来扩展此功能以等待某些输入:

confirm :- write('Continue? [y/n] '), flush_output, get_char(y).
现在将第二条替换为:

solve((A,B)) :- !, solve(A), confirm, solve(B).
编辑:得到的响应是,您可以添加此子句:

solve(T) :- call(T).

这就是所谓的香草元口译员(我抄袭自):

您可以通过添加谓词以在继续之前请求输入来扩展此功能以等待某些输入:

confirm :- write('Continue? [y/n] '), flush_output, get_char(y).
现在将第二条替换为:

solve((A,B)) :- !, solve(A), confirm, solve(B).
编辑:得到的响应是,您可以添加此子句:

solve(T) :- call(T).

您可以构建一个元解释器,该解释器可以以比您可能期望的更少的痛苦完成此任务。这讨论了如何解决这一问题的一些变体,甚至允许用户指定子句是否为真。您可以构建一个元解释器,以比您可能预期的更少的工作量来完成这一任务。这讨论了如何解决这个问题的一些变体,甚至允许用户指定一个子句是否为真。非常感谢!我只有一个月的prolog经验,所以我必须先弄清楚你的代码。无论如何,我的教授告诉我也可以用read/1来完成,你对此有何看法?@WillemvanderSpek
read/1
将阅读整个学期,因此用户必须输入句号和换行符,并且你必须容忍Prolog的提示。但是试着阅读(y)而不是获取字符(y),看看会发生什么。非常感谢!我只有一个月的prolog经验,所以我必须先弄清楚你的代码。无论如何,我的教授告诉我也可以用read/1来完成,你对此有何看法?@WillemvanderSpek
read/1
将阅读整个学期,因此用户必须输入句号和换行符,并且你必须容忍Prolog的提示。但是试着读(y)而不是获取字符(y),看看会发生什么。