与非严格评估和懒惰评估相比,我很难找到渴望评估的优点/缺点。
我想知道你对此的看法,应该使用什么比较标准以及优点/缺点。
另一个问题是维基百科中的原因 https://en.wikipedia.org/wiki/Eager_evaluation
它说:“或者它可能会延迟对更迫切需要的表达式的评估。”
我没有得到那个部分......对于那些“更迫切需要”的表达式,如何急切评估延迟评估?不明白这是什么意思......任何想法?
答案 0 :(得分:3)
完整的句子是:
急切评估的一个缺点是它迫使评估 在运行时可能不需要的表达式,或者它可能会延迟 评估有更迫切需要的表达。
采取以下(略构)示例:
List<Boolean> x = empty list;
// some times later, in some other part of the program
x.add(false);
// even later, in yet anopther part of the program
x.add(is_prime(sum(prime_factors(12345678999997773511111111111873452098612576436))));
// back in main processing
if (all(x)) {
....
} else {
....
}
all
类似于:
boolean all(List<Boolean> it) {
for (b : list) if not b then return false;
return true;
}
这里,计算all(x)
并不严格需要is_prime(...)的结果,因此它的计算会延迟更多的立即计算。更直接,因为需要使用值all(x)
来决定如何继续,而在这种情况下 - 此时根本不需要值is_prime(...)
。不过,它可以在else
分支中稍后使用。