[#19685] [Oniguruma] Version 1.8.1 — "K.Kosako" <kosako@...>
ftp.ruby-lang.orgに、onigd20030301.tar.gzを置きました。
まつもと ゆきひろです
In article <1046613803.268414.3770.nullmailer@picachu.netlab.jp>,
まつもと ゆきひろです
In article <1046618629.053336.3932.nullmailer@picachu.netlab.jp>,
まつもと ゆきひろです
In article <1046626516.031539.4118.nullmailer@picachu.netlab.jp>,
まつもと ゆきひろです
Tanaka Akiraさんの<871y1pu8am.fsf@serein.a02.aist.go.jp>から
At Wed, 5 Mar 2003 18:07:17 +0900,
Akinori MUSHAさんの<86r89mi39s.wl%knu@iDaemons.org>から
At Wed, 5 Mar 2003 18:18:31 +0900,
Akinori MUSHAさんの<86bs0iqoif.wl%knu@iDaemons.org>から
In article <20030312044626.2D879C2@helium.ruby-lang.org>,
Tanaka Akiraさんの<87smtnl3r6.fsf@serein.a02.aist.go.jp>から
In article <20030317072134.6C0298D@helium.ruby-lang.org>,
In article <20030318015042.DCBB859A@helium.ruby-lang.org>,
Tanaka Akiraさんの<87llzavfl9.fsf@serein.a02.aist.go.jp>から
In article <20030321040221.EC03C5AA@helium.ruby-lang.org>,
まつもと ゆきひろです
In article <1048256492.877945.30145.nullmailer@picachu.netlab.jp>,
まつもと ゆきひろです
高橋征義です。
In article <20030326.151120.41647198.takahashi@twinspark.co.jp>,
In article <008c01c2f360$9ac1b030$85222fc0@sarion.co.jp>,
In article <003301c2f42d$8e60cf10$85222fc0@sarion.co.jp>,
なひです。
もりきゅうです。
In article <20030328080008J.maki@rubycolor.org>,
In article <20030408023633B.maki@rubycolor.org>,
In article <20030327085213Z.maki@rubycolor.org>,
In article <20030401.194831.74754691.takahashi@twinspark.co.jp>,
In article <1048256492.877945.30145.nullmailer@picachu.netlab.jp>,
別の問題なんですが、鬼車入り ruby 1.6 で以下のエラーが出るのは
In article <20030310030319.390374A6@helium.ruby-lang.org>,
[#19698] 1.8.0 preview2 — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
渡辺哲也です。
わたなべです。
渡辺哲也です。
わたなべです。
渡辺哲也です。
わたなべです。
[#19705] 1.8.0 preview2 — matz@... (Yukihiro Matsumoto)
まつもと ゆきひろです
[#19712] bug in cgi.rb? — Masaki Fujimoto <fujimoto@...>
はじめまして。ふじもとと申します。
[#19741] Re: File.open with block calls IO#close even if it is overriden — "TOYOFUKU Chikanobu" <toyofuku@...>
豊福です。
[#19751] (1.8.0-preview2) Proc#call — Fukumoto Atsushi <fukumoto@...>
1.8.0-preview2 で、 Proc#call の動作がへんです。
なかだです。
まつもと ゆきひろです
なかだです。
まつもと ゆきひろです
なかだです。
まつもと ゆきひろです
なかだです。
まつもと ゆきひろです
新井です。
まつもと ゆきひろです
まつもと ゆきひろです
まつもと ゆきひろです
まつもと ゆきひろです
咳といいます。
まつもと ゆきひろです
咳といいます。
まつもと ゆきひろです
前田です。
まつもと ゆきひろです
前田です。
[#19771] IO#initialize is not called from IO.pipe and IO.popen — Tanaka Akira <akr@...17n.org>
ふと(というか気がつくべくして)、気がついたのですが、
なかだです。
In article <200303081816.h28IGAO20114@sharui.nakada.kanuma.tochigi.jp>,
[#19774] [ruby-core:00918] [1.8.0-preview2] make install — Minero Aoki <aamine@...>
あおきです。
[#19801] RSTRING(str)->ptr — nobu.nakada@...
なかだです。
まつもと ゆきひろです
こんばんは。nyasu@3web です。
なかだです。
[#19820] 1.8.0 の終了コードがおかしい? — Shin-ichiro HARA <sinara@...>
原です。
[#19826] SEGV on Rubicon with ruby -w — Tanaka Akira <akr@...17n.org>
ふと、Rubicon を ruby -w で動かすと core を吐くことがあることに気がつ
[#19830] lib/tracer.rb and Thread.critical — Fukumoto Atsushi <fukumoto@...>
[#19832] [ruby-talk:66990] README.EXT.ja seems to have more info... — Kazuo Saito <ksaito@...>
斉藤です。
斉藤です。
新井です。
[#19837] [BUG] (0...3).max/ruby-1.8.0 preview2 — Shin-ichiro HARA <sinara@...>
原です。
まつもと ゆきひろです
原です。
[#19865] dl in $SAFE=4 — Minero Aoki <aamine@...>
あおきです。
まつもと ゆきひろです
At Fri, 21 Mar 2003 23:33:11 +0900,
まつもと ゆきひろです
At Sun, 23 Mar 2003 08:19:10 +0900,
In article <200303230210.h2N2A57t014593@smtp8.dti.ne.jp>,
まつもと ゆきひろです
In article <1048483232.298501.13178.nullmailer@picachu.netlab.jp>,
[#19897] Proc#call parameter assignment — "NAKAMURA, Hiroshi" <nakahiro@...>
なひです。
まつもと ゆきひろです
なひです。
[#19924] Re: — Akio Takenaka <redmagic@...8.xrea.com>
はじめまして、Ruby初心者:竹中です。
[#19927] Pre-commit check failed — UENO Katsuhiro <unnie@...>
うえのです。
[ruby-dev:19799] Re: (1.8.0-preview2) Proc#call
In message "[ruby-dev:19798] Re: (1.8.0-preview2) Proc#call"
on 03/03/12, Masatoshi SEKI <m_seki@mva.biglobe.ne.jp> writes:
|
|
|咳といいます。
|
|> そのようですね。breakで終了したのか正常終了したのか知る方法
|> が欲しいというニーズに答えるためのようですね。うーむ、難しい。
|> かなりややこしいので咳さんと直接話さないといけないかなあ。
|> どうやって話すかが問題だけど。
|
|むむむ。まつもとさんが関東へ来るようなイベントないですかねえ。
|合わせて咳も関東へ行きますよ。
5月(17日?)にアスキーがイベントを行うって行ってました。16日
には情報処理学会のHI研究会ってのがあるんで東京に居ます。
でもちょっと先ですね。
もっと先だと7月にオープンソースカンファレンス(7日から11日、
オレゴン州ポートランド) に出席するんで、東京を経由するんじゃ
ないかと。
|ruby-bugs-ja PR#98というのはどこで見られるのでしたっけ。
http://www.ruby-lang.org/cgi-bin/ruby-bugs-ja/
から1.7グループに入ってください。
一応、現状を簡単にまとめると
* local jumpにはreturn, next, break, redo, retryがある。
* orphan(孤児)な手続きオブジェクトからのlocal jumpは例外を
発生させることがある。
* orphanとは手続きオブジェクトを作るモトになったブロックを
囲むメソッドが終了してしまっている手続きオブジェクトであ
る。
def foo
f = lambda{|x| p x}
p f # fはまだorphanじゃない
return f
end
f2 = foo() # f2はfooが終了しているのでorphan
* returnはブロックを囲むメソッドの末尾にジャンプするため、
orphanな手続きオブジェクトから呼び出されると飛び先が分か
らずlocal jump errorになる。
def foo
lambda{|x| return x}
end
foo().call(42)
* nextはブロックの実行を中断すし、yield(またはProc#call)が
終了する。1.7ではnextは値を取ることができ、その値はyield
の戻り値となる。nextはlocal jump errorにならない。
* breakはブロックが与えられているメソッドの実行を中断する。
1.7ではbreakは値を取ることができ、その値はメソッドの戻り
値となる。ブロックが手続きオブジェクトとなった場合、その
内部でのbreakの挙動には検討の余地がある。※
* redoはブロックの実行の先頭に戻る。redoはlocal jump error
にならない。
* retryはブロックが与えられているメソッドの実行をその引数
の評価からやり直す。orphanな手続きオブジェクトから呼び出
されると飛び先が分からずlocal jump errorになる。
f = lambda{retry}
f.call
さて、ここにorphanな手続きオブジェクトpがあるとします。
このpの実行の仕方は3種類あります。
(1) ブロック引数(&p)を使う
(2) callメソッドを使う
(3) yieldメソッドを使う
これらそれぞれの場合、あるべきlocal jumpの挙動はどうあるべき
かを考察します(ただし、nextとredoについては考察の必要はあり
ません。不確定な要素がないからです)。
1のブロック引数を使う場合、コードは次のようになります。
5.each(&p)
これは本来pが持つブロックをeachメソッドに渡したのと同じ動作
をするべきだと考えます。よって、pの中のbreakはeachの実行を中
断し、retryはeachの実行を最初からやり直しするべきだと考えま
す。では、returnはどうでしょう。選択肢は二つあって、ひとつは
「pが持つブロックをeachメソッドに渡したのと同じ動作」という
部分を厳密に考えてeachメソッドがreturnするという挙動、もうひ
とつは、return文と返るべきメソッドが遠く離れているのは変だと
いうことで、エラーにする挙動。現在の1.8は後者を採用していま
す。
2のcallメソッドを使う場合、コードは次のようになります。
p.call
この場合、ブロックを実行しているメソッドはcallメソッドになる
と解釈するのが自然のような気がします。そうすると可能な選択肢
はそれぞれ
A B
break callを中断 例外
return 例外 例外
retry callを再実行 例外
です。1.6はBBB、現状の1.8はABBです。使い勝手から考えると
returnの例外は決まりのような気がしますが、retryの例外は考慮
の余地があるかもしれません。ABAとかも面白そう。
3のyieldメソッドですが、これは1.7から導入されたものです。使
い方はcallと同じです。
p.yield
もともとyieldはcallで行われているパラメータの数の厳密なチェッ
クを回避することが目的で、挙動の違いもそれだけでした。しかし、
ruby-bugs-ja PR#98の過程でbreakを例外にするかどうかという違
いも付与されるようになりました。でも、今改めて考えると一つの
メソッドに複数の目的を付与するのはやっぱり良くないようにも思
います。もし、可能であればlocal jumpについては上記のABBまた
はABAでcallと揃えた方が良いと思います。
さて、となると最終的に考慮しなければならない問題は、dRubyが
ネットワークを介してブロックを実行するときbreakやretryを検出
しなければならない時、最低限なにが必要か、という点です。
田中哲さんが以前に例外に依存しない方法を提案していらっしゃっ
たと思うのですが、もう忘れちゃったなあ。
まつもと ゆきひろ /:|)