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

編集の要約なし
編集の要約なし
 
(同じ利用者による、間の3版が非表示)
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>


14行目: 14行目:
<syntaxhighlight lang="basic">
<syntaxhighlight lang="basic">
x = 5 + 3  ; 遅延評価ではまだ実行されません。
x = 5 + 3  ; 遅延評価ではまだ実行されません。
PRINT x    ; 遅延評価ではx = 5 + 3が実行され結果が表示されます。
PRINT x    ; 遅延評価では5 + 3が実行され結果が表示されます。
PRINT x + 1 ; 遅延評価では再びx = 5 + 3が実行され、その結果に+1した結果が表示されます。
PRINT x     ; 遅延評価では5 + 3が再び実行され結果が表示されます。
</syntaxhighlight>
</syntaxhighlight>


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