>"), read(X), process(X). 并用 process/1 做各种事情。要捕获我添加的任何未知命令: proces-6ren">
gpt4 book ai didi

Prolog - 关闭 SWI-prolog 时无限循环

转载 作者:行者123 更新时间:2023-12-01 12:08:59 26 4
gpt4 key购买 nike

我在 Prolog 中编写了以下代码:

go :- write(">>"), read(X), process(X).

并用 process/1 做各种事情。要捕获我添加的任何未知命令:

process(Y) :- write("unknown command.\n"), go.

问题是在程序正常结束之前通过关闭窗口退出 SWI-Prolog 时,它会进入无限循环。我试图搜索退出时调用的 SWI-Prolog 是什么,但找不到它以便将其包含在代码中。对这部分的任何帮助或替代解决方法将不胜感激。提前致谢!

最佳答案

您还需要处理术语 end_of_file

在最后一个 Prolog 项之后,即当只有布局或注释被读取到文件或流的末尾时,read/1 生成项 end_of_file

由于(在许多当前系统中)当读取超过文件末尾(在标准输入上)时要执行的操作是reset,因此后续读取也会产生此项。因此你的程序在提示它不知道命令 end_of_file 时循环。

关于Prolog - 关闭 SWI-prolog 时无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54067373/

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