#以前質問させてもらったものですが、やはりわからないので再度質問させていただきます。
#;; コルーチンの定義構文
#(define (yield) (call/cc (lambda (cont) (eneque ....
#の所で、次ページのthreeを呼び出しの中で,
#(print 'one) (yield) と呼び出したときに,
#先ほどの変数contはどのような手続きに拘束されすか。
#できれば、コードの形で示していただきたいです。
#;; yieldの中のcall/ccは(yieldの中には他にやることが残ってないので)
;; 「yieldから戻った後」の処理を捕まえます。コードで示すならcontの中身は
;; こんな手続きです。
(lambda (val)
(print 'two)
(yield)
(print 'three)
(yield)
(let lp ()
...以下ループ...))
#私は落ちますが疑問点があれば書いておいて下さい。エディタに書いてpasteすれば上のように複数行書けます。
#解答ありがとうございます。字面だけ追ってくとcontは(define (yield) ... の中にあって、contを呼び出すとここに値が返されるように思ってしまうのですが
#そうです。contを呼び出すと(define (yield) (call/cc ....)<= このcall/ccから戻ってきたように見えるわけですが、yieldはこの後に処理が無いので、ここのcall/ccから戻ることはすなわちyieldから戻るのと同じです。これが例えば (define (yield) (call/cc ...) (print "Came back to yield!")) となっていれば、contを呼ぶとメッセージが表示されると思います。