遅延評価
計算を、結果が本当に必要になる時点まで先送りする評価戦略。Haskellの標準動作(call-by-need)で、無限のデータ構造や無駄な計算の回避を可能にする。
Haskellでは take 5 [1..] が無限リストから先頭5要素だけを取り出し、実際に計算されるのもその5つだけだ。JavaScriptのジェネレータ(function*)、Pythonのイテレータと itertools.islice、Rustの Iterator のメソッドチェーンも遅延的に動く。
代償は、性能とメモリ使用量の見通しが悪くなることだ。サンク(thunk)が評価されないまま積み上がると、Haskellで有名な「スペースリーク」が起きる。正格評価が標準の言語では、本当に効果のある場所でだけ明示的に遅延させるのが普通である。