Lisp Scheme Part22at TECH
Lisp Scheme Part22 - 暇つぶし2ch735:デフォルトの名無しさん
08/06/19 09:55:33
プログラムのトップレベルでの(begin <表現形式1> ...)は、beginのボディを形成する連続する式、定義、構文定義に等しい。(R5RS 5.1)

(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巻末のように合成構文として実装すると後者になるが
原始構文として規格通りに実装すると前者となる。


次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch