将单调性与效率相结合

有时人们认为,为了提高效率,我们必须接受在现实世界的 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)).

并将单调性与决定论结合起来