From: Yusuke ENDOH Date: 2007-11-15T23:20:30+09:00 Subject: [ruby-dev:32297] Re: [提案] Array#tail 遠藤です。 07/11/13 に Yukihiro Matsumoto さんは書きました: > take_whileとdrop_whileを分離したので十分にありえる話ではある > のですが 分離しないとありえない話なんでしょうか。 ブロックを省略したとき Enumerator を返すため? > 実際のところ無引数のtakeが先頭の要素を返すとか、無 > 引数のdropが先頭の要素を落とすとかは自明でない気がしますが、 そう感じるのは「drop(n) が先頭 n 個を落とす」という知識を持っているから だと思います。 仮に「drop は先頭を落とす」という知識が先にあるとすれば、その拡張として 「drop(n) は先頭 n 個を落とす」のが自然に感じられるのではないでしょうか。 first と first(n) の関係のように。 問題は「drop(n) は先頭 n 個を落とす」という知識が一般的かどうか、または drop という名前からそういう挙動がイメージされるかどうかだと思いますが、 そんなイメージをするのは (幸か不幸か) 一部の Haskeller だけだと思います。 というわけで、無引数の drop は今ならまだ受け入れられると思います。 1.9 リリースで drop(n) が知れ渡ったら手遅れかも。 一方無引数 take については、使いたい状況が滅多になさそうなので無くても いいんですが、drop だけ無引数なのもバランスが悪いなぁと思ったのでした。 -- Yusuke ENDOH