青木です。

  In mail "[ruby-dev:24029] Re: String#each -> String#each_char"
    Shugo Maeda <shugo / ruby-lang.org> wrote:

> 前田です。

> > (1) 文字列 → 行配列 強化策
> > 
> > * 文字列を行配列にするメソッド String#lines を新設する (名前はHaskellから)
> > 
> > * Enumerator を組み込みにする
> > * to_enum を短くする。例えば #by とか
> > * map_by, collect_by, select_by... を全部用意してしまう
> 
> Enumeratorを組込みにするのなら、String#lines(あるいは他の名前のメソッド)
> でEnumeratorを返すという手もありますね。

特定の Enumerator 生成専用のメソッドを作るというのは
いいかもしれませんね。応用範囲も広そうです。

でも、とりあえず lines は配列かな……。
とりあえず安全な行配列化メソッドを確保したいです。

# 話を広げすぎると絶対立ち消えになるし


> > (2) 配列 → IO 強化策
> > 
> > * 配列からワンステップで StringIO を作れるようにする。
> >   (いいメソッド名が思いつかない)
> 
> StringIO.newでto_sを使うようにすればワンステップになりますけど、それが
> いいかどうかは微妙ですね。
> 
> それはそれとして、Stringでもmapやselectを使うとArrayになっちゃうので、
> やっぱり同じ問題がありませんか?

そうですね。grep してみると、わりとこまめに join しているようです。
あとは puts でしょうか。map や select は連鎖することが多い点も
感覚に影響しているかもしれません。


> いっそのことMethodオブジェクトにeachをcallのaliasとして用意して、
> Enumerableをincludeしてしまうというのは強引すぎるでしょうか。

関数型っぽいというか、Python ぽいというか、そんな感じですねえ。
さすがにやりすぎでは。
-------------------------------------------------------------------
青木峰郎