剪切(删除选择点)
有时希望防止 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(因为它是第一个可能的解决方案)并且不再寻找解决方案。