continuationとは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > 百科事典 > continuationの意味・解説 

継続

(continuation から転送)

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

計算機科学における継続(けいぞく、continuation)とは、プログラムを実行中のある時点において、評価されていない残りのプログラム(the rest of the program)を表現するものであり、手続き(procedure)あるいは関数(function)として表現されるものである[1]

継続に相当する概念は1960年代初頭から存在しており、Algol 60のコンパイラの実装[2]などの文献にたびたび登場していたが、継続の利用に関する最も早い記述は、1964年のアドリアン・ファン・ワインハールデン (en:Adriaan van Wijngaardenによるものである[1]

概要

計算一般における継続

Schemeによる次の式を考える:

(+ 4 (+ 1 2))

この式を評価する際、まず (+ 1 2) が計算され、すなわち 1+2 が計算され、次にその結果に4を足して全体の計算結果が求められる。(+ 1 2) の評価が行われた段階での「残りの計算」を表現すると、

(lambda (v) (+ 4 v))

のようになる[3]。この式はすなわち、値 v を引数に取り、それに4を足した値を返す関数である。実際、この後 (+ 1 2) の計算結果が v に代入されて、4を足した値が最終的に計算結果が求められるため、この関数は確かに (+ 1 2) を評価する段階での「残りの計算」の表現である。

call/cc

Schemeの call-with-current-continuation (call/cc と省略される) は、その時点での継続を引数として関数を呼び出す手続きである。Schemeの言語仕様書(R7RS[4])には「もっとも単純な例」として次のコードが載っている:

(define list-length
  (lambda (obj)
    (call-with-current-continuation
      (lambda (return)
        (letrec ((r
              (lambda (obj)
                (cond ((null? obj) 0)
                  ((pair? obj)
                    (+ (r (cdr obj)) 1))
                  (else (return #f))))))
          (r obj))))))

このコードは、真正な(終端が空リストである)リストが渡された際にはそのリストの要素数を数えて返し、そうでない場合はfalse値を返す。

goto文を持つ言語の意味論

継続の概念はgoto文を持つ言語に意味論を与える。goto文を持たない場合、意味論は例えば命令文 γ、変数に対する値の割り当て ρ、抽象機械の状態遷移 θ ∊ [SS] (S は機械の状態空間を表す) を用いて




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

辞書ショートカット

すべての辞書の索引

「continuation」の関連用語

continuationのお隣キーワード
検索ランキング

   

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



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

   
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアの継続 (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。

©2025 GRAS Group, Inc.RSS