「遅延評価」の版間の差分
ナビゲーションに移動
検索に移動
Administrator (トーク | 投稿記録) (ページの作成:「遅延評価とは、プログラミング言語において、式の評価を必要とする時点まで評価を遅延させる手法です。<syntaxhighlight lang=…」) |
Administrator (トーク | 投稿記録) |
||
(同じ利用者による、間の4版が非表示) | |||
1行目: | 1行目: | ||
− | + | '''遅延評価'''(ちえんひょうか、lazy)とは、[[プログラミング言語]]において、式の評価を必要とする時点まで評価を遅延させる手法です。対義語は「[[正確評価]]」です。 | |
− | |||
− | |||
− | |||
− | + | 一般的に遅延評価は[[関数型プログラミング言語]]で使用されます。例えば[[Haskell]]では遅延評価が基本的な評価戦略として使用されます。また、[[JavaScript]]でも遅延評価を使用することができます。 | |
− | + | == 概要 == | |
+ | 通常、[[プログラミング言語]]では、[[変数]]に値を代入するとすぐにその式が評価されます。 | ||
+ | <syntaxhighlight lang="basic"> | ||
+ | x = 5 + 3 ; 正確評価では5 + 3が実行されxに8が代入されます。 | ||
+ | PRINT x ; 正確評価ではxの内容を表示するだけです。 | ||
+ | PRINT x ; 正確評価ではxの内容を表示するだけです。 | ||
+ | </syntaxhighlight> | ||
+ | しかし、遅延評価では式の評価を必要とするまで遅らせます。 | ||
+ | <syntaxhighlight lang="basic"> | ||
+ | x = 5 + 3 ; 遅延評価ではまだ実行されません。 | ||
+ | PRINT x ; 遅延評価では5 + 3が実行され結果が表示されます。 | ||
+ | PRINT x ; 遅延評価では5 + 3が再び実行され結果が表示されます。 | ||
+ | </syntaxhighlight> | ||
− | + | 遅延評価は上記を見ての通り「x = 5 + 3」の計算が何度も発生して[[プログラム]]の実行効率は悪そうに見えますが、遅延評価を使用することで[[スタックオーバーフロー]]せずに「無限のリスト」などの無限のデータ構造を表現することも可能になります。なお[[メモリ]]は勢いよく消費します。 | |
− | |||
− |
2023年3月15日 (水) 05:51時点における最新版
遅延評価(ちえんひょうか、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」の計算が何度も発生してプログラムの実行効率は悪そうに見えますが、遅延評価を使用することでスタックオーバーフローせずに「無限のリスト」などの無限のデータ構造を表現することも可能になります。なおメモリは勢いよく消費します。