From: Tadashi Saito Date: 2007-02-26T14:09:29+09:00 Subject: [ruby-dev:30424] Re: Arrayのメソッド増強について 斎藤と申します。Haskellを知らない素人がしゃしゃり出るのもあれなのです が、知らない人間として考えたことを投稿してみます。 On Mon, 26 Feb 2007 12:21:59 +0900 Yukihiro Matsumoto wrote: > |--- Array#take {|item| .... } 別名案:take_while, slice{} takeだと、単語として抽象的過ぎないでしょうか。中身を「取って来る」 メソッドは既存の中にいくつもありますし。 また、Haskellを知らない人に取っては類推も効かないと思います。例えば take 追加後にRubyを勉強した人が fetch も勉強した後、どっちがどっちか分からな くなりそうで心配です。 加えて「重複のないselect」という意味合いも、名前からは伝わらないと思い ます。 > ary.take(n) # 最初のn要素 ary.first(n)の方が意味がはっきりしているので、別名を追加してもあまりうれ しくないと思います。 > |--- Array#drop {|item| .... } 別名案:lstrip, drop_while, 上記のselectとの類比と同じく「重複のないreject」と見た時、やはり分かり辛 いと思います。 と、否定的な意見だけでは生産的でないので、代案があるべきですよね。 うーん…。 上記2つのブロック付きの物については、青木さんは ary.uniq.select {...} が長過ぎる(効率も悪そう)という意見なのだと推測しました。でしたらselect に、重複を残すかどうかのオプション引数(真偽値)を許すいうのはどうで しょうか。 ary.select(nil) {...} うーん、わざとfalseを避けてもまったく短くなっていない…。 (というオチですみません) -- 斎藤ただし