|
[ruby-list:42988] Re: Ruby/Tk+callcc: msg#00049lang.ruby.japanese
永井@知能.九工大です. From: Hattori Kenta <hattori-KHJI0Q8f9bZ4Eiagz67IpQ@xxxxxxxxxxxxxxxx> Subject: [ruby-list:42987] Ruby/Tk+callcc Date: Wed, 8 Nov 2006 15:14:08 +0900 Message-ID: <m3mz72lb2o.wl%hattori-KHJI0Q8f9bZ4Eiagz67IpQ@xxxxxxxxxxxxxxxx> > 早速の質問で恐縮なのですが、Ruby/Tkとcallccを使ってとあるプログラムを > 作成しているのですが、実行時エラーに悩んでいます。 (snip) > Ruby/Tkを使うときはcallccの使用はあきらめた方が良いので > しょうか。。。 私が勘違いしているのでなければ,残念ながら, callcc はあきらめてもらうしかないと思います. Ruby/Tk では,処理の流れが Ruby 側と Tcl/Tk 側とを 行ったり来たりしています. そのため,Ruby 側で勝手にスタックフレームを書き換えられると Tcl/Tk 側の内部状態が非常に高い確率で破壊されてしまいます. 同じような問題は例外発生においても起きるのですが, その場合は一気にジャンプしてしまうのではなく, 呼び出し階層を逆に辿りつつ例外情報を渡していくことで 問題を回避することが可能です. # tcltklib の内部はそのようになっているはずです. しかし callcc の場合はそうした法則性がありませんから, 回避策の導入は不可能と言っていいと思います. callcc を使わない方法での実装をお願いします. -- 永井 秀利 (九工大 知能情報) nagai-iKxUiVHJP4pSXnIrXG/8Ww@xxxxxxxxxxxxxxxx
|
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| Previous by Date: | [ruby-list:42987] Ruby/Tk+callcc, Hattori Kenta |
|---|---|
| Next by Date: | [ruby-list:42989] Re: Ruby/Tk+callcc, hattori-KHJI0Q8f9bZ4Eiagz67IpQ |
| Previous by Thread: | [ruby-list:42987] Ruby/Tk+callcc, Hattori Kenta |
| Next by Thread: | [ruby-list:42989] Re: Ruby/Tk+callcc, hattori-KHJI0Q8f9bZ4Eiagz67IpQ |
| Indexes: | [Date] [Thread] [Top] [All Lists] |
| News | FAQ | advertise |