遅延評価

提供: MonoBook
ナビゲーションに移動 検索に移動

遅延評価(ちえんひょうか、lazy)とは、プログラミング言語において、式の評価を必要とする時点まで評価を遅延させる手法です。対義語は「正確評価」です。

一般的に遅延評価は関数型プログラミング言語で使用されます。例えばHaskellでは遅延評価が基本的な評価戦略として使用されます。また、JavaScriptでも遅延評価を使用することができます。

概要[編集 | ソースを編集]

通常、プログラミング言語では、変数に値を代入するとすぐにその式が評価されます。

x = 5 + 3   ; 正確評価では5 + 3が実行されxに8が代入されます
PRINT x     ; 正確評価ではxの内容を表示するだけです
PRINT x     ; 正確評価ではxの内容を表示するだけです

しかし、遅延評価では式の評価を必要とするまで遅らせます。

x = 5 + 3   ; 遅延評価ではまだ実行されません
PRINT x     ; 遅延評価では5 + 3が実行され結果が表示されます
PRINT x     ; 遅延評価では5 + 3が再び実行され結果が表示されます

遅延評価は上記を見ての通り「x = 5 + 3」の計算が何度も発生してプログラムの実行効率は悪そうに見えますが、遅延評価を使用することでスタックオーバーフローせずに「無限のリスト」などの無限のデータ構造を表現することも可能になります。なおメモリは勢いよく消費します。