継続
文字列の集合{ BAB, AAB, BAA, AAA, ABA }があるとき、これらのすべてを1回ずつ含み、かつ、3文字の部分文字列としてはこれらの文字列しか含まない文字列は、BABAAABとBAAABABの2通りある。文字列の集合が{ BAB, AAB, BAA, AAA }のときは、そのような条件で…
日にちが開いてしまったけれど、前回の続き。 まず、meta continuation、メタ継続について。メタ継続とはつまり、「継続の継続」のことで、次のような動機により導入される概念らしい。resetとshiftの継続意味論を再掲。 ここで、resetがnon-tail callを含ん…
ここでいろいろ議論されてる、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つとり、そ…