剪下(刪除選擇點)

有時希望防止 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(因為它是第一個可能的解決方案)並且不再尋找解決方案。