継続

「こんなプログラムを書いてみよう」 in Scheme

文字列の集合{ BAB, AAB, BAA, AAA, ABA }があるとき、これらのすべてを1回ずつ含み、かつ、3文字の部分文字列としてはこれらの文字列しか含まない文字列は、BABAAABとBAAABABの2通りある。文字列の集合が{ BAB, AAB, BAA, AAA }のときは、そのような条件で…

限定継続について勉強してみた(continued)

日にちが開いてしまったけれど、前回の続き。 まず、meta continuation、メタ継続について。メタ継続とはつまり、「継続の継続」のことで、次のような動機により導入される概念らしい。resetとshiftの継続意味論を再掲。 ここで、resetがnon-tail callを含ん…

Python風ジェネレータを限定継続で

ここでいろいろ議論されてる、call/ccを使ったジェネレータを勉強がてらに限定継続で書き直してみる。トリッキーな部分がなくなって、かなり素直に書ける。 (define (make-generator f) (let ((cont #f)) (lambda () (reset (if cont (cont #f) (f (lambda (…

限定継続について勉強してみた

話題の限定継続についてこれで自習。意味論とか書いてあって難しそうだけど、とりあえず自分の分かる範囲で読み進める。ツッコミ歓迎です。まずは、call/ccのsemantics。 Eを評価すると1引数関数fになる。fはという関数に適用される。は「引数を1つとり、そ…