Prolog总是重新评估规则吗?

时间:2015-07-31 07:54:10

标签: prolog

% expensiveComp(+A,-Result)
% otherRule(+Arg1,Arg2+,-Result)
% r(+A,+B,C)
r(A,B,C) :-
  expensiveComp(A,Result),
  otherRule(Result,B,C).

如果多次调用rA具有相同的值expensiveComp每次调用r时都必须重新评估,或者在某些情况下Prolog会只是将缓存的值绑定到Result

Prolog的某些实现是否更能让他们知道什么时候不需要重新评估规则?

1 个答案:

答案 0 :(得分:2)

有许多Prolog实现支持不同类型的memoization,通常在Prolog-lingo中称为“tabling”:where to add