継続、コンティニュエーションとは
既にある状態・行為を続ける、続いていくものを指す。
(例:試合を継続する、継続的に観察する)
サービス・契約・イベント企画・販売内容に対して用いられる場合もある。
といった場合、「この戦い」というのが目下進行中の現在の文脈であり、その終了を待つ「継続」は
etc...
といった一連の未来図全体にあたる。
これが何の役に立つかというと、プログラム上で適当な継続を「認識」し、ある種のラベル、チェックポイントとして利用することができるわけである。
基本的に、プログラムをどのタイミングでスライスしても「来るべき次の継続」というのは存在するのだが、何も考えずに取り出した所で神話時代のgotoが黒魔術で蘇るだけなので余り意味はない。ダイクストラやクヌース以降を生きる我々進歩的文明人類としては、「それ」を飼いならし、去勢し、真の名をもてしばりつける必要がある。そこで用いられるマントラが「call-with-current-continuation」、通称「call/cc」である。
call/ccを唱えると、処理系はまずその瞬間における継続を一引数関数の形に加工する。カリー化を知っているとイメージしやすいと思うが、プログラム列を仮想的に1-in/1-out手続きのパイプラインと見た時、どの出力も必ずそれを待つ次の入力につながっている。つまりバトンを渡すべき次走者を、その瞬間の継続(の入り口)と捉えるわけである。上の例なら
といった感じだろうか。
これを実際どう使うのかは大変なのでここでは書かないが(http://practical-scheme.net/wiliki/wiliki.cgi?Schemeの継続周りの記事がオススメ)、このprocを使うと中間過程をキングクリムゾンして、結果が出ればよかろうなプログラムが書ける。また変数に束縛してやると時空をねじ曲げたプログラムフローを作ることもでき、うまく立ち回るとロジックを自由に簡潔に書きたい形で書ける(もちろんスパゲティをゆでることもできる。グレンキャノンもだ!)
掲示板
急上昇ワード改
最終更新:2025/02/14(金) 01:00
最終更新:2025/02/14(金) 01:00
ウォッチリストに追加しました!
すでにウォッチリストに
入っています。
追加に失敗しました。
ほめた!
ほめるを取消しました。
ほめるに失敗しました。
ほめるの取消しに失敗しました。