「遅延評価」の版間の差分

提供: MonoBook
ナビゲーションに移動 検索に移動
8行目: 8行目:
 
x = 5 + 3  ; 正確評価では5 + 3が実行されxに8が代入されます。
 
x = 5 + 3  ; 正確評価では5 + 3が実行されxに8が代入されます。
 
PRINT x    ; 正確評価ではxの内容を表示するだけです。
 
PRINT x    ; 正確評価ではxの内容を表示するだけです。
PRINT x + 1 ; 正確評価ではx + 1が実行され結果が表示されます。
+
PRINT x     ; 正確評価ではxの内容を表示するだけです。
 
</syntaxhighlight>
 
</syntaxhighlight>
  
15行目: 15行目:
 
x = 5 + 3  ; 遅延評価ではまだ実行されません。
 
x = 5 + 3  ; 遅延評価ではまだ実行されません。
 
PRINT x    ; 遅延評価ではx = 5 + 3が実行され結果が表示されます。
 
PRINT x    ; 遅延評価ではx = 5 + 3が実行され結果が表示されます。
PRINT x + 1 ; 遅延評価では再びx = 5 + 3が実行され、その結果に+1した結果が表示されます。
+
PRINT x + 1 ; 遅延評価では再びx = 5 + 3が実行され結果が表示されます。
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 
遅延評価は上記を見ての通り「x = 5 + 3」の計算が何度も発生して[[プログラム]]の実行効率は悪そうに見えますが、遅延評価を使用することで無限のリストなどの無限のデータ構造を表現することも可能になります。
 
遅延評価は上記を見ての通り「x = 5 + 3」の計算が何度も発生して[[プログラム]]の実行効率は悪そうに見えますが、遅延評価を使用することで無限のリストなどの無限のデータ構造を表現することも可能になります。

2023年3月15日 (水) 05:49時点における版

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

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

概要

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

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

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

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

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