Prolog 不会停止接受读取中的数据
Prolog does not stop accepting data in read
这是我在 Prolog 中的代码。
do(cinema):- parents(yes); (parents(no),weather(windy),money(less)).
do(play):- parents(no),weather(sunny).
do(stay):- parents(no),weather(rainy).
do(shopping):- parents(no),weather(windy),money(more).
start:- write('Parents: '),read(X),assert(parents(X)), write('Weather: '),read(Y),assert(weather(Y)), write('Money: '),read(Z),assert(money(Z)).
clear:- retract(parents(X));retract(weather(X));retract(money(X)).
我正在尝试接受来自用户的数据,然后使用决策树找出要完成的任务。
我是 运行 代码为:
?-start, do(X).
但它读取了家长输入后并没有写入天气,而是一直在读取数据。
尝试在写入目标之后放置一些齐平目标,然后记得在您的输入中添加一个句号,因为您正在使用 read/1 需要一个术语。
你的程序没有任何问题。参见 http://swish.swi-prolog.org/p/JDAJcUhq.pl。最可能的原因已经提到:没有以“.”结束你的任期。 clear/0
确实是错误的,但在网络版本中不需要,因为每个新查询都是在新环境中执行的。
至少在 SWI-Prolog 中,在从终端读取操作之前不需要刷新,因为刷新控制台输出流总是在读取之前完成。
这是我在 Prolog 中的代码。
do(cinema):- parents(yes); (parents(no),weather(windy),money(less)).
do(play):- parents(no),weather(sunny).
do(stay):- parents(no),weather(rainy).
do(shopping):- parents(no),weather(windy),money(more).
start:- write('Parents: '),read(X),assert(parents(X)), write('Weather: '),read(Y),assert(weather(Y)), write('Money: '),read(Z),assert(money(Z)).
clear:- retract(parents(X));retract(weather(X));retract(money(X)).
我正在尝试接受来自用户的数据,然后使用决策树找出要完成的任务。 我是 运行 代码为:
?-start, do(X).
但它读取了家长输入后并没有写入天气,而是一直在读取数据。
尝试在写入目标之后放置一些齐平目标,然后记得在您的输入中添加一个句号,因为您正在使用 read/1 需要一个术语。
你的程序没有任何问题。参见 http://swish.swi-prolog.org/p/JDAJcUhq.pl。最可能的原因已经提到:没有以“.”结束你的任期。 clear/0
确实是错误的,但在网络版本中不需要,因为每个新查询都是在新环境中执行的。
至少在 SWI-Prolog 中,在从终端读取操作之前不需要刷新,因为刷新控制台输出流总是在读取之前完成。