为什么在Prolog中抛出异常而不是简单的失败?

时间:2015-10-06 10:52:51

标签: exception gnu-prolog

我在Prolog中编程,有时候我想要失败,但我得到一个例外,我无法理解为什么它们之间应该有区别。如果某些事情无法执行,那意味着谓词没有成功,那么它就是一个简单的失败。我错过了什么吗?

1 个答案:

答案 0 :(得分:2)

失败意味着你要证明的是错误的。一个例外意味着你试图证明的东西没有意义(例如,试图计算原子的平方根)由于某种原因或者你遇到一些系统限制(例如耗尽可用内存)。

但您可以通过编写以下内容轻松地将任何异常转换为失败:

catch(Goal, _, fail)