遅延評価とは? わかりやすく解説

Weblio 辞書 > 同じ種類の言葉 > 社会 > 社会一般 > 評価 > 遅延評価の意味・解説 

遅延評価

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/07/28 02:42 UTC 版)

遅延評価(ちえんひょうか、: lazy evaluation)や必要呼び(ひつようよび、: call-by-need)は評価戦略の一種類であり、非正格な関数型言語で使用もされる。対義語は先行評価: eager evaluation)。

概要

評価しなければならない値が存在するとき、実際の計算を値が必要になるまで行わないことをいう。評価法が指示されているが実際の計算が行われていない中間状態の時それをプロミス(: promise)や、計算の実体をさしてサンク(: thunk)といい、プロミスを強制(: force)することで値が計算される。一旦計算された値はキャッシュをすることが可能であり、遅延プロミスは最大で一度しか計算されないようにすることができる。ただし、Haskell の実装によっては、何度でも同じ計算を行う。

遅延評価を行う利点は計算量最適化である。

ある関数を呼び出すとき、その関数が引数の全てを利用するとは限らない。条件次第で捨ててしまうような値を事前に準備することは非効率的である。このような場合遅延評価を行うと必要なときだけ値が計算されるので計算量を低減できる。

また同じ評価を複数回利用する可能性があるとき、先行評価では値を保持しない限りそれぞれのケースで再計算を行うが、遅延評価では実評価は最初の一度だけで二回目以降はキャッシュを参照するだけであることが保証されている[要検証]為、自然な形で値の再利用を実現できる。

一方で遅延評価は実装の難しさ、計算が起こるタイミングを予想できないという弱点を持つ。現行計算機のアーキテクチャでは先行評価が機械的に自然なこともあり、普及するには時間が必要である。

遅延評価を持つ言語

遅延評価を原則とする言語の例

遅延評価を仕様に定義している言語の例

関連項目


遅延評価

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/11/20 02:06 UTC 版)

Haskell」の記事における「遅延評価」の解説

Haskell は遅延評価を基本的な評価戦略とする。ほとんどの言語では関数呼び出しにおいて引数与えられすべての式評価してから呼び出され関数に渡す先行評価評価戦略とするが、これに対し Haskell ではあらゆる式はそれが必要になるまで評価されない次の定数 answer評価すると常に 42返すが、その定義には未定義の式を含む。 answer = const 42 (1 `div` 0) ここで、const は常に第1引数返す定数関数である。また、`div` は整数の除算を行う演算子であり、1 `div` 0 は 1 / 0 に相当し、この値は未定義であり、この部分評価すればエラーになる。正格評価をする言語このような式を評価しようとすると、ゼロ除算によるエラーになるであろう。しかし 上記定数 answer評価してエラーにはならないconst は第1引数をつねに返すので第2引数評価する要はなく、第2引数与えられた式 1 `div` 0 は無視されるので評価されないからである。遅延評価がデフォルト行われることにより、不要な計算省かれ参照透過性により同じ式を複数評価する必要もなくなるため、Haskell では最適化によって計算効率の向上期待できる場合がある。ただし、頻繁に新たな値を計算する場合正格評価のほうが効率がよく、必要に応じてseq関数やBangPatterns拡張による明示により正格評価もできる。

※この「遅延評価」の解説は、「Haskell」の解説の一部です。
「遅延評価」を含む「Haskell」の記事については、「Haskell」の概要を参照ください。

ウィキペディア小見出し辞書の「遅延評価」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ



遅延評価と同じ種類の言葉


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「遅延評価」の関連用語

遅延評価のお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



遅延評価のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアの遅延評価 (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、WikipediaのHaskell (改訂履歴)、引数 (改訂履歴)、投機的実行 (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2025 GRAS Group, Inc.RSS