# 惰性求值

> 在编程语言理论中，惰性求值（英语：Lazy Evaluation），又译为惰性计算、懒惰求值，也称为传需求调用（call-by-need），是计算机编程中的一个概念，目的是要最小化计算机要做的工作。惰性计算的最重要的好处是它可以在空间复杂度上得到极大的优化，从而可以轻易构造一个无限大的数据类型。惰性求值的相反是及早求值，这是一个大多数编程语言，如C语言，所使用的缺省计算方式。

- ID: m04558
- 分类: learn
- 领域: 认知科学

## 定义

一种计算策略，即不立即计算表达式的值，而是等到真正需要这个值的时候才计算。如果不需要，就永远不计算。脚手架作用： 高效的拖延。在信息过载的时代，这是最高级的认知策略：不要预先学习所有知识，不要提前处理所有焦虑。建立"按需加载"（Call by need）的机制，只在问题逼近眼前的瞬间调用资源，能节省巨大的算力。

## 机制

表达式不在绑定时求值，而在首次被需要时才计算，且结果可被缓存复用。机理是把计算推迟到必需，避免无用工作。

## 练习

在支持惰性求值的语言或库中构建潜在无限结构。只消费所需部分。注意避免空间泄漏（过早持有 thunk）。

## 脚手架用法

高效的拖延。在信息过载的时代，这是最高级的认知策略：不要预先学习所有知识，不要提前处理所有焦虑。建立"按需加载"（Call by need）的机制，只在问题逼近眼前的瞬间调用资源，能节省巨大的算力。

[阅读网页](https://thinkingmodels.site/entries/detail/m04558)
