継続の違い

以下の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.