Lisp Scheme Part22
■ このスレッドは過去ログ倉庫に格納されています
0735デフォルトの名無しさん
2008/06/19(木) 09:55:33(display (call/cc (lambda (c) (set! cc c) (cc 'hoge))))
(display 'fuga)
(cc 'moga)
においてcall/ccが返し、ccに記憶される継続は
(lambda (x)
(print (display x))
(loop (print (eval (read) (interactive-environment)))))
と看做せるから無限ループに陥らない。
他方、
(let ()
(display (call/cc (lmabda (c) (set! cc c) (cc 'hoge))))
(display 'fuga)
(cc 'moga))
においてcall/ccが返し、ccに記憶される継続は
(lambda (x)
(display x)
(display 'fuga)
(cc 'moga))
と看做せるから無限ループに陥る。
(ccの末尾再帰呼出し)
beginをR5RS巻末のように合成構文として実装すると後者になるが
原始構文として規格通りに実装すると前者となる。
■ このスレッドは過去ログ倉庫に格納されています