惰性求值(Lazy Evaluation),又称惰性计算、懒惰求值,是一个计算机编程中的一个概念,它的目的是要最小化计算机要做的工作。它有两个相关而又有区别的含意,可以表示为“延迟求值”和“最小化求值”,本条目专注前者,后者请参见最小化计算条目。除可以得到性能的提升外,惰性计算的最重要的好处是它可以构造一个无限的数据类型。

惰性求值的相反是及早求值,这是一个大多数编程语言所拥有的普通计算方式。


最明确的例子, Haskell 的无限列表, [1..] 这是一个无限长的列表.
我们是无法在内存上直接放这么大的数组的, 但是通过惰性计算就能使用它.
从第一个元素开始获取, 用到几个计算几个, 这个就是惰性计算的例子.
英文是 Lazy Evaluation, 具体有多少翻译就不确定了.
性能不了解, 不过这样的设计真的让编程语言里的无限数组处理更清晰了.
具体在 Wiki 里比较明确, 但也更难懂 http://en.wikipedia.org/wiki/Lazy_evaluation

Summation of primes

Problem 10

The sum of the primes below 10 is 2 + 3 + 5 + 7 = 17.

Find the sum of all the primes below two million.


Lazy Evaluation 惰性计算

Lazy.js简要示例:
https://segmentfault.com/a/1190000000358463#articleHeader6
Lazy.js是一个JavaScript工具库,类似Underscore 和 Lo-Dash,但是底层引擎比其他库支持更多的用例,并且在大多数情况下性能更加优越。
https://github.com/dtao/lazy.js

https://en.wikipedia.org/wiki/Lazy_evaluation

Lodash文档:
https://lodash.com/docs

https://segmentfault.com/search?q=%E6%83%B0%E6%80%A7%E8%AE%A1%E7%AE%97