將單調性與效率相結合

有時人們認為,為了提高效率,我們必須接受在現實世界的 Prolog 程式中使用非單調構造。

沒有證據證明這一點。最近的研究表明,Prolog 的純粹單調子集不僅足以表達大多數真實世界的節目,而且在實踐中也可以接受。最近發現並鼓勵這種觀點的構造是 if_/3:它結合了單調性和減少選擇點。請參見索引 dif / 2

例如,表單的程式碼:

pred(L, Ls) :-
    condition(L),
    then(Ls).
pred(L, Ls) :-
    \+ condition(L),
    else(Ls).

可以用 if_/3 寫成:

pred(L, Ls) :-
    if_(condition(L),
        then(Ls),
        else(Ls)).

並將單調性與決定論結合起來