prolog - Prolog 总是重新评估规则吗?

标签 prolog

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

如果多次使用 A 的相同值调用 r,则每次 r 都必须重新评估 expenseComp > 被调用,还是在某些情况下 Prolog 会将缓存值绑定(bind)到 Result

Prolog 的某些实现是否能够更好地了解何时不需要重新评估规则?

最佳答案

有许多 Prolog 实现支持不同类型的内存,在 Prolog 语言中通常称为“制表”: , , .

关于prolog - Prolog 总是重新评估规则吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31740949/

相关文章:

关于对称关系的 Prolog 重复解

prolog - 在 Prolog 中编写区间内数字总和的程序

java - 最快的双向 java prolog 实现

prolog - 为什么Prolog ','运算符是右结合的,而它是从左到右处理的

prolog - 简单的 prolog 程序过早返回 false

prolog - 搜索路径是gprolog

performance - 建议Prolog处理器利用大页面

sql - 将 [Head|Tail] 编译为 SQL

prolog - 检查字符串是否是 Prolog 中的子字符串

list - 有任何内容([_])和任何内容(_)的列表有什么区别