惰性求值是什麼意思

惰性求值(Lazy Evaluation)是一種計算策略,其中表達式的值不是立即計算的,而是等到它們的值被需要的時候才計算。這種策略與急切求值(Eager Evaluation)或曰即時求值相對,後者在運行時會立即計算表達式的值。

在惰性求值中,一個複雜的數據結構的內部部分只有在它們被顯式要求時才會被計算。這可以節省計算資源,因為只有在實際需要時才會開銷計算資源,而不是在整個結構被建立時就一次性計算。

惰性求值在函數式編程語言中尤其重要,因為它允許處理那些不能或不需要全部求值的數據結構,比如無窮序列或遞歸結構。它還可以與疊代器模式結合使用,以避免創造龐大的數據結構。

惰性求值的例子可以在Haskell這樣的純函數式編程語言中找到。在Haskell中,列表推導可以使用惰性求值來產生無窮序列,而只有那些通過遍歷列表的函數實際要求的元素才會被計算。