継続の違い
以下の2つのコードは継続の観点からは意味が異なるということで良いのだろうか。
;; A (define cont #f) (begin (call/cc (lambda (k) (set! cont k))) (display "hige") (cont 0)) ;; B (define cont #f) (call/cc (lambda (k) (set! cont k))) (display "hige") (cont 0)
典型的な処理系では
- A は無限ループ
- A は (begin ...) を read した時点で、begin の最後まで継続が判明している。
- Bは一度 "hige" と表示して終了。
- B は (call/cc ...) read 時点では (display ...) は継続に含まれていない。
つまり継続は 1 read の範囲で有効という理解で良いのだろうか。
R6RS の 1.11 Continuations を読む限りでは "an entire future for the computation" の解釈は処理系にゆだねられているということか?
The continuation represents an entire (default) future for the computation.