[#38371] Re: [ruby-cvs:30538] Ruby:r23320 (trunk): * lib/set.rb (SortedSet#add): Do not let an uncomparable object — "Yugui (Yuki Sonoda)" <yugui@...>
Yuguiです。
At Mon, 4 May 2009 23:44:22 +0900,
遠藤です。
At Fri, 8 May 2009 02:00:10 +0900,
[#38372] making install-sh more descriptive — "Yugui (Yuki Sonoda)" <yugui@...>
install-shが空になって久しい(r520)です。
[#38382] [Bug #1442] indentation check and coverage for toplevel do not work — Yusuke Endoh <redmine@...>
Bug #1442: indentation check and coverage for toplevel do not work
[#38390] [Bug:1.8] Tempfile and extended Enumerable — Tanaka Akira <akr@...>
1.8.8dev で、以下のように、Enumerable に each2 を定義し、
[#38392] Enumerable#gather_each — Tanaka Akira <akr@...>
ときに、複数行をまとめて扱いたいことがあります。
ujihisaと申します。
まつもと ゆきひろです
At Sun, 10 May 2009 06:00:08 +0900,
In article <E1M2t0u-0000Aa-Sd@x61.netlab.jp>,
まつもと ゆきひろです
In article <E1M4oSd-00005c-WB@x61.netlab.jp>,
In article <873ab3531u.fsf@fsij.org>,
まつもと ゆきひろです
At Sat, 9 May 2009 15:30:20 +0900,
In article <86r5yy2nrg.knu@iDaemons.org>,
At Sun, 10 May 2009 10:08:47 +0900,
In article <86ocu132gq.knu@iDaemons.org>,
At Sun, 10 May 2009 15:57:33 +0900,
In article <86my9l2tts.knu@iDaemons.org>,
Haskell の groupBy と Python の groupby が似ている、という話
遠藤です。
In article <e0b1e5700905140800y6d701c6fj731a59ffd83b9d79@mail.gmail.com>,
[#38423] longlife gc — Narihiro Nakamura <authornari@...>
nariと申します.
[#38446] [Bug:1.9] exact Time and inexact Time — Yusuke ENDOH <mame@...>
遠藤です。
In article <e0b1e5700905132145i32bed2f0y80faef19c119824f@mail.gmail.com>,
遠藤です。
[#38463] SQLiteライブラリ — "NARUSE, Yui" <naruse@...>
成瀬です。
[#38486] [Bug #1483] some commands installed without program-suffix — Kazuhiro NISHIYAMA <redmine@...>
Bug #1483: some commands installed without program-suffix
[#38493] [Feature:trunk] enhancement of Array#drop — "U.Nakamura" <usa@...>
こんにちは、なかむら(う)です。
まつもと ゆきひろです
こんにちは、なかむら(う)です。
[#38518] [Bug:1.9] Enumerator.new { }.take(1).inject(&:+) causes stack overflow — Yusuke ENDOH <mame@...>
遠藤です。
[#38524] [Bug #1503] -Kuをつけた時、/[#{s}]/n と Regexp.new("[#{s}]",nil,"n") で実行結果が異なる — sinnichi eguchi <redmine@...>
Bug #1503: -Kuをつけた時、/[#{s}]/n と Regexp.new("[#{s}]",nil,"n") で実行結果が異なる
[ruby-dev:38421] Re: Enumerable#gather_each
At Sun, 10 May 2009 08:53:31 +0900,
NARUSE, Yui wrote:
> わたしもバッファを用意してーというのは考えたのですが、
> 田中さんのgather_eachで可能なことが、
> gather_eachより複雑になってしまったらダメなんじゃないですかね。
gather_each で可能なこと、つまり gather_each の結果がそのまま
ユーザが得たい最終結果となるケースは十分に多いのでしょうか。
パラグラフのように同質のものの繰り返しならぴったりですが、そう
でない場合は、分割された個々が何であるかという情報が失われている
ので処理の下流で再び検査しなければなりませんよね。また、捨てる
機能も必要なことが少なくないと思います。
おそらくそれらは守備範囲外とするのでしょうが、範囲内としている
部分が十分に広いのか、そして実際の応用ニーズとの間に隙間はないか
という疑問を持っています。それがマッチするのなら、適切な名前で
追加すればいいと思います。
> 田中さんのgather_eachでできることは、これ以上概念を増やさず
> ほぼ同等の記述量でこなせつつ、自由度もあげられないといけないのかなと。
>
> RubyなんでBufferみたいな概念を導入しても意外とすっきりするんですが、
> そこで甘えちゃいけないんじゃないかと思うのですよ。
>
> # というか、これってバッファは別に提供して、
> # Enumerable版injectでやるべきな気も
それは一つあるんですが、 yield を保留し、どこかのタイミングで
明示的に指定したものを yield するという機能が要求されるので、
yielder なりそれを包含する buffer なりを渡すというAPIは必要だと
思います。
ときどき select と map を連結させることがありますが、それを
いっぺんに可能にする機能はほしいと思っています。たとえばこんな
感じです。
module Enumerable
def with_yielder(&block)
Enumerator.new { |yielder|
each { |x|
block.call(x, yielder)
}
}
end
end
# 整数の書いてある行を抽出し、数列にする
p "abc\n123\n\n456\ndef\n".lines.with_yielder { |line, yielder|
if m = /^([+\-]?\d+)$/.match(line)
yielder << m[1].to_i
end
}.to_a #=> [123, 456]
これの前に with_object({}) でバッファやステータスを取るための
領域を付加すれば、メソッドチェーンでバッファを実装できますね。
> で、考えたのですが、ChangeLogやmboxの場合に対応するには、
> 直前の要素の分類結果がわかればそれで足りるんじゃないですかね。
> 結局これらは、
> * 特定の要素は自分が分類結果
> * それ以外は直前の分類結果と同じ
> というルールなので、
> arg = lambda {|l, current| l =~ /^\S/ ? self : current }
> みたいにすればよいかなぁと。
>
> これならば田中さんのgather_eachで可能だったことは、
> currentを読み捨てればいいだけなので全く同じコードで可能になります。
これはよさそうです。
--
Akinori MUSHA / http://akinori.org/