ニコニコ大百科

継続

継続、コンティニュエーションとは、プログラムフローのある時点における実行文脈に対してその未来図全体のことをいう。要は「to be continued(続く)……」で表される全部。

曖昧さ回避
  1. ケイゾクTBS系列テレビドラマ
  2. 継続高校 - テレビアニメガールズ&パンツァー」に登場する架学校

概要

、この戦いが終ったら結婚するんだ」

 といった場合、「この戦い」というのが下進行中の現在の文脈であり、その終了を待つ「継続」は

etc...

といった一連の未来図全体にあたる。

これが何の役に立つかというと、プログラム上で適当継続を「認識」し、ある種のラベルチェックポイントとして利用することができるわけである。

基本的に、プログラムをどのタイミングでスライスしても「来るべき次の継続」というのは存在するのだが、何も考えずに取り出した所で神話時代のgoto黒魔術でるだけなので余り意味はない。ダイクストラやクヌース以降を生きる々進歩的文明人類としては、「それ」を飼いならし、去勢し、の名をもてしばりつける必要がある。そこで用いられるマントラが「call-with-current-continuation」、通称「call/cc」である。

 call/ccを唱えると、処理系はまずその間における継続を一引数関数の形に加工する。カリー化を知っているとイメージしやすいと思うが、プログラム列を仮想的に1-in/1-out手続きのパイラインと見た時、どの出も必ずそれを待つ次の入につながっている。つまりバトンを渡すべき次走者を、その間の継続(の入り口)と捉えるわけである。上の例なら

 proc := 未来図なう()

といった感じだろうか。

 これを実際どう使うのかは大変なのでここでは書かないが(http://practical-scheme.net/wiliki/wiliki.cgi?Scheme継続周りの記事がオススメ)、このprocを使うと中間過程をキングクリムゾンして、結果が出ればよかろうなプログラムが書ける。また変数に束縛してやると時をねじ曲げたプログラムフローを作ることもでき、うまく立ち回るとロジックを自由に簡潔に書きたい形で書ける(もちろんスパゲティをゆでることもできる。グレンキャノンもだ!)

関連動画

継続に関するニコニコ動画動画を……ないよね。

関連項目

Sponsored

この記事について

ツイート このエントリーをはてなブックマークに追加
「継続」で検索