将单调性与效率相结合
有时人们认为,为了提高效率,我们必须接受在现实世界的 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)).
并将单调性与决定论结合起来。