剪切(删除选择点)

有时希望防止 Prolog 回溯到替代解决方案。程序员可以使用的基本工具是切割运算符,以阻止序言继续进行其回溯。考虑以下。

% (percent signs mean comments)
% a is the parent of b, c, and d.
parent(a,b).
parent(a,c).
parent(a,d).

这里谓词 parent/2 不止一次成功

?- parent(a,X).

叫做。为了阻止 prolog 在找到第一个解决方案之后搜索更多解决方案,你会使用 cut 操作符,就像这样。

?- parent(a,X), !.

这将使 X 等于 b(因为它是第一个可能的解决方案)并且不再寻找解决方案。