【发布时间】:2019-01-07 00:54:11
【问题描述】:
我已经在 Prolog 中编写了以下代码:
go :- write(">>"), read(X), process(X).
并用 process/1 做各种事情。 要捕获我添加的任何未知命令:
process(Y) :- write("unknown command.\n"), go.
问题是在程序正常结束之前通过关闭窗口退出 SWI-Prolog 时,它会进入无限循环。 我试图在这样退出时搜索 SWI-Prolog 调用的内容,但找不到它以便将其包含在代码中。 对此部分的任何帮助或替代解决方法将不胜感激。 提前致谢!
【问题讨论】:
-
有趣的阅读并感谢您的输入。我实现循环的方式是在每个过程中返回。该程序运行良好(据我所知),除非我关闭 SWI-prolog 的窗口。
-
你处理过
end_of_file吗?这是在 EOF 上读取的。 -
这似乎解决了它。谢谢!我仍然是 prolog 的初学者...是否可以安全地假设关闭 SWI-prolog 会关闭流并给出 end_of_file 原子?
-
@Syrko:我不是初学者,但这个术语级 I/O 对我来说仍然很痛苦,也是。尽量避免它。而是重新查阅 Prolog 程序而不是阅读 - 如果可能的话。
标签: prolog