[#43378] trouble on "requrie 'tk'" — Hidetoshi NAGAI <nagai@...>
永井@知能.九工大です.
5 messages
2011/04/02
[#43382] Re: [ruby-cvs:38408] Ruby:r31228 (trunk): Fri Apr 1 18:53:06 2011 NAKAMURA, Hiroshi <nahi@ruby-lang.org> — "Martin J. Dürst" <duerst@...>
RFC2965 とか 'Netscape spec' より、
4 messages
2011/04/04
[#43403] Re: [ruby-cvs:38408] Ruby:r31228 (trunk): Fri Apr 1 18:53:06 2011 NAKAMURA, Hiroshi <nahi@ruby-lang.org>
— Hiroshi Nakamura <nakahiro@...>
2011/04/20
T24gTW9uLCBBcHIgNCwgMjAxMSBhdCAxMDozOCwgIk1hcnRpbiBKLiBEw7xyc3QiIDxkdWVyc3RA
[#43384] [Ruby 1.9 - Bug #4562][Open] [pull requested] ./config no-ssl2で作ったopensslとext/opensslが混ざらない — Shyouhei Urabe <redmine@...>
7 messages
2011/04/07
[#43392] StringIO#{readlines(0), each_line(0)}が無限ループする — Watson <watson1978@...>
メールのタイトル通りなのですが、
8 messages
2011/04/08
[#43393] Re: StringIO#{readlines(0), each_line(0)}が無限ループする
— "Shota Fukumori (sora_h)" <sorah@...>
2011/04/09
r31252 で修正しました。
[#43394] Re: StringIO#{readlines(0), each_line(0)}が無限ループする
— Nobuhiro IMAI <nov@...>
2011/04/09
いまいです。
[#43406] [Ruby 1.9 - Bug #4591][Open] (1.5...2).max #=> 1 (Range#max) — redmine@...
10 messages
2011/04/20
[#43407] Re: [Ruby 1.9 - Bug #4591][Open] (1.5...2).max #=> 1 (Range#max)
— KOSAKI Motohiro <kosaki.motohiro@...>
2011/04/20
>
[#43412] [Ruby 1.9 - Feature #4592][Open] Tempfileを直接保存したい — Takeyuki Fujioka <xibbar@...>
15 messages
2011/04/21
[#45477] [ruby-trunk - Feature #4592] Tempfileを直接保存したい
— "mame (Yusuke Endoh)" <mame@...>
2012/03/31
[#45487] [ruby-trunk - Feature #4592] Tempfileを直接保存したい
— "mame (Yusuke Endoh)" <mame@...>
2012/04/02
[#43426] [Ruby 1.9 - Feature #4602][Open] naming ruby dll (win32/64) — Akio Tajima <artonx@...>
11 messages
2011/04/23
[#43427] [Ruby 1.9 - Feature #4605][Open] Random#randとKernel#randでRangeを扱えるように — Yuya Yaguchi <yayugu@...>
7 messages
2011/04/24
[#43437] Re: [ruby-cvs:38520] Ruby:r31340 (trunk): * random.c (random_s_rand, Init_Random): Random.rand should behave as — Urabe Shyouhei <shyouhei@...>
卜部です
6 messages
2011/04/25
[#43453] ThreadGroup の強化案 — Hidetoshi NAGAI <nagai@...>
永井@知能.九工大です.
14 messages
2011/04/28
[#43901] ThreadGroup#make_local_space! (Re: ThreadGroup の強化案)
— Hidetoshi NAGAI <nagai@...>
2011/06/25
永井@知能.九工大です.少々長いメールで失礼します.
[#43920] Re: ThreadGroup#make_local_space! (Re: ThreadGroup の強化案)
— Urabe Shyouhei <shyouhei@...>
2011/06/26
ひっじょうに根本的な質問をするのですけれども、ThreadGroupって何に使うん
[#43978] Re: ThreadGroup#make_local_space!
— Hidetoshi NAGAI <nagai@...>
2011/06/28
永井@知能.九工大です.
[#43979] Re: ThreadGroup#make_local_space!
— KOSAKI Motohiro <kosaki.motohiro@...>
2011/06/28
(2011/06/28 15:15), Hidetoshi NAGAI wrote:
[#43456] Readline.completion_append_character — Nobuhiro IMAI <nov@...>
いまいです。
6 messages
2011/04/29
[#43458] Re: Readline.completion_append_character
— Takao Kouji <kouji@...7.net>
2011/04/30
=1B$B9bHx$G$9!#=1B(B
[ruby-dev:43425] Re: (ruby-listから転載) lambda中のProc中のreturnの挙動について
From:
"Y. NOBUOKA" <nobuoka@...>
Date:
2011-04-23 16:59:32 UTC
List:
ruby-dev #43425
信岡です。
[ruby-dev:35165] や [ruby-dev:35167] あたりを参考にしつつ問題点を考えたので
まとめておきます。 補足説明的な扱いで。
考えるべき問題は 2 点あると思います。
== 1. lambda の中の proc からの return の挙動 (Ruby 1.9 と Ruby 1.8 で動作が異なる) ==
まず 1 つめは、lambda の中の proc からの return の挙動が Ruby 1.9 と Ruby 1.8 で異なる
ということです。 現在の Ruby 1.8, 1.9 での動作をみると
・Ruby 1.9 では、proc 直下の return 式が評価されると、その proc を含んでいる最も内側の
lambda もしくはメソッドが終了する
・Ruby 1.8 では proc を含んでいるメソッドが終了する (lambda は無視される)
となっています。 [ruby-dev:35175] でのまつもとさんの発言をみると、現在の Ruby 1.9 における
動作は仕様どおりなのだと思いますが、「では Ruby 1.8 における動作はこれでいいのかどうか」、
というのが 1 つ考えるべき点かと思います。
(ちなみに [ruby-dev:35175] のサンプルコードでは proc メソッドが使われていますが、Ruby 1.8 での
proc メソッドは proc ではなく lambda を生成するので、[ruby-dev:35175] のサンプルコードを
そのまま ruby 1.8 と 1.9 の両方で実行すると当然ながら異なる動作結果になると思います。)
# サンプルコード
def test1
b1 = lambda{
b2 = lambda{
Proc.new{
# この return 式は:
# Ruby 1.8 ではメソッド test1 を抜ける <- これは仕様どおり?
# Ruby 1.9 では内側の lambda を抜ける
return :test1_proc
}.call
}
$stdout << "test1-1 : #{b2.call()}\n"
:test1_lambda # not reached on ruby 1.8, but reached on ruby 1.9
}
$stdout << "test1-2 : #{b1.call()}\n"
:test1 # not reached on ruby 1.8, but reached on ruby 1.9
end
$stdout << "test1-3 : #{test1()}\n"
上記コードの実行結果は Ruby 1.8, 1.9 でそれぞれ以下のようになります。
ruby 1.8.7 (2010-08-16 patchlevel 302) [x86_64-linux]
test1-3 : test1_proc
ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-linux]
test1-1 : test1_proc
test1-2 : test1_lambda
test1-3 : test1
== 2. lambda の中で生成された proc の中の return が、lambda 実行終了後に評価された場合の動作 ==
高尾さんが仰っている問題点の 2 つ目は、まさに [ruby-dev:35167] での話題と同じです。
ささださんが 『実装的な都合でいうと,「lambda から見て orphan をチェックするの大変そうだなぁ」
と思って,対応出来ていません.ただ,m() から抜けるふつーの return になっています.ちょっと,
レアケース過ぎるかなあ,とも思うので,対応しなくても,特に困らないかとは思います.』 [ruby-dev:35173] と
仰って結局そのままになっているのだと思いますが、
ア. 現在の動作が仕様であって、今後もこのままである
イ. 対応できるのであれば将来は LocalJumpError を発生させるようにするかもしれないので、
このようなコードは書くべきではない
のどちらであるのかを明確に示して頂ければ Ruby ユーザーとしてはありがたいです。
(LocalJumpError を発生させるのが直感的な動作なので、現状ではエラーが発生しないとしても
そのようなコードは書くべきではないと思いますが。。)
以上、補足と言いつつ長くなってしまいすみません。。
--
信岡 ゆう (NOBUOKA Yu)