在SWI-Prolog中有没有内置的断言总是会失败并阻止机器回溯--它会立即停止程序的执行(这不是fail/0所做的)?我可以使用裁剪,但我不喜欢它们。
做像!, fail这样的事情对我来说不是问题,但为了实现我想要的,我必须在更多的地方使用cuts,这是我不喜欢的。
发布于 2010-05-24 06:02:57
你可以使用异常。基于你的问题--这应该会有帮助。参考link
发布于 2010-05-23 23:58:20
你可以使用明确设计的机制来帮助你完成一些事情,但你不喜欢它?
你总是可以使用not,这是cut fail的语法糖
发布于 2010-05-24 08:38:33
脑海中浮现出两种选择:
backtrack(true)或backtrack(false)术语,并在您正在编写的谓词的定义中解释它,如果它设置为backtrack(false),将很快失败;如果设置为backtrack(true),则继续。请注意,这实际上不会阻止回溯;它应该只会启用快速失败。即使您的证明树很深,这也应该提供一种快速的方法来防止对backtracking.就我个人而言,我以前用过这两种方法--第一种方法在编写代码之前就预料到了需要,而后者我没有。
https://stackoverflow.com/questions/2892393
复制相似问题