[#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:38402] Re: Enumerable#gather_each
成瀬です。
Akinori MUSHA wrote:
> At Sun, 10 May 2009 06:00:08 +0900,
> matz wrote:
>> In message "Re: [ruby-dev:38394] Re: Enumerable#gather_each"
>> on Sat, 9 May 2009 15:53:22 +0900, ujihisa <ujihisa@gmail.com> writes:
>>
>> |一度に二つの手続きを渡すのではなく、
>> |一つのブロックを受け取りEnumeratorを返すgatherと、
>> |従来のeachに分けた方が自然になるのではないでしょうか。
>>
>> 私もそう思います。ただ、Enumerableから「条件を満たす限り連続
>> した要素をまとめる」ことをgatherと呼ぶことになんとなく満足で
>> きません。gatherという単語からは全体から集めるような印象を受
>> けませんか? 私だけの感覚でしょうか。
>
> 最初に提案を見て split_by, slice_at, group_until のような名前を
> 思い付きましたが、そうして名前を付けてみると、件の挙動にぴったり
> 来る名前がないというよりむしろ、それらの名前から想起される機能が
> ある程度の幅を持つということが本質なのではないかと気づきます。
gather_byとかsplit_before/afterとか色々悩んだんですが、
これの動きって、divide lines according to proc's return valueじゃないですかね。
つまり、divide_eachとか。
集めると言うよりも、分けるイメージ
> すなわち、田中さんも触れた通り、ヘッダ行の場合はそこから始まり、
> フッタ行の場合はそこで終わり、区切り行の場合は読み捨てる、という
> ような複数の要求が想定でき、それら使い分けができる柔軟性が必要
> なのではないかということです。
>
>> とはいえ、[ruby-dev:38399]のbufferというのも、気持ちは分かる
>> んですが、ちょっと違うような気がします。柔軟性は高いんですが、
>> なんか内臓が見えてる気がして。
>
> 内臓というのはどのあたりのことでしょうか。すっきりしていると
> 思うんですが。Ruby って大体の部分において内臓は見られますよね。
わたしもバッファを用意してーというのは考えたのですが、
田中さんのgather_eachで可能なことが、
gather_eachより複雑になってしまったらダメなんじゃないですかね。
田中さんのgather_eachでできることは、これ以上概念を増やさず
ほぼ同等の記述量でこなせつつ、自由度もあげられないといけないのかなと。
RubyなんでBufferみたいな概念を導入しても意外とすっきりするんですが、
そこで甘えちゃいけないんじゃないかと思うのですよ。
# というか、これってバッファは別に提供して、
# Enumerable版injectでやるべきな気も
> なお、複数行をまとめる方法として使いそうなものは、まとめる先
> 頭要素を検出する方法を指定するとか、他にもいくつかあるように
> 思います。たとえば ChangeLog や mbox を扱うのには、先頭要素
> を指定するのがいいでしょう。そういうものはまた別のメソッドと
> して作るのがいいのではないかと思います。
で、考えたのですが、ChangeLogやmboxの場合に対応するには、
直前の要素の分類結果がわかればそれで足りるんじゃないですかね。
結局これらは、
* 特定の要素は自分が分類結果
* それ以外は直前の分類結果と同じ
というルールなので、
arg = lambda {|l, current| l =~ /^\S/ ? self : current }
みたいにすればよいかなぁと。
これならば田中さんのgather_eachで可能だったことは、
currentを読み捨てればいいだけなので全く同じコードで可能になります。
--
NARUSE, Yui <naruse@airemix.jp>