Next: 9 Continuation操作機構をもつSchemeインタプリタ
Up: 8 Continuation(継続)
Previous: 8.5 Call/CCによる自動バックトラック
インタプリタのトップレベルに戻るreset手続きを
call/ccを用いると,以下のように実現できます.
<cl> (scheme-interpreter)
==> (call/cc
(lambda (cc)
(set! reset
(lambda ()
(cc "back to top level")))))
#<Interpreted Closure ...>
==> (reset)
"back to top level"
==> (list (display 1) (display 2) (reset) 3)
12
"back to top level"
==>
以下のように,resetを定義する場所が手続きの中であった場合には,
<cl> (scheme-interpreter)
==> (define (test)
(display 1)
(call/cc
(lambda (cc)
(set! reset (lambda ()
(cc "back to top level")))))
(display 2))
TEST
==> (test)
12
2
==> (reset)
2
2
というような結果となります.
generated through LaTeX2HTML. M.Inaba 平成18年5月6日