「遅延評価」の版間の差分
Administrator (トーク | 投稿記録) ページの作成:「遅延評価とは、プログラミング言語において、式の評価を必要とする時点まで評価を遅延させる手法です。<syntaxhighlight lang=…」 |
Administrator (トーク | 投稿記録) 編集の要約なし |
||
| 1行目: | 1行目: | ||
'''遅延評価'''(ちえんひょうか、lazy)とは、[[プログラミング言語]]において、式の評価を必要とする時点まで評価を遅延させる手法です。対義語は「[[正確評価]]」です。 | |||
一般的に遅延評価は[[関数型プログラミング言語]]で使用されます。例えば[[Haskell]]では遅延評価が基本的な評価戦略として使用されます。また、[[JavaScript]]でも遅延評価を使用することができます。 | |||
== 概要 == | |||
通常、[[プログラミング言語]]では、[[変数]]に値を代入するとすぐにその式が評価されます。 | |||
<syntaxhighlight lang="basic"> | |||
x = 5 + 3 ; 正確評価では5 + 3が実行されxに8が代入されます。 | |||
PRINT x ; 正確評価ではxの内容を表示するだけです。 | |||
PRINT x + 1 ; 正確評価ではx + 1が実行され結果が表示されます。 | |||
</syntaxhighlight> | |||
しかし、遅延評価では式の評価を必要とするまで遅らせます。 | |||
<syntaxhighlight lang="basic"> | |||
x = 5 + 3 ; 遅延評価ではまだ実行されません。 | |||
PRINT x ; 遅延評価ではx = 5 + 3が実行され結果が表示されます。 | |||
PRINT x + 1 ; 遅延評価では再びx = 5 + 3が実行され、その結果に+1した結果が表示されます。 | |||
</syntaxhighlight> | |||
遅延評価は上記を見ての通り「x = 5 + 3」の計算が何度も発生して[[プログラム]]の実行効率は悪そうに見えますが、遅延評価を使用することで無限のリストなどの無限のデータ構造を表現することも可能になります。 | |||