[#24112] ruby/tk crashes on bcc32 — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp>

山本です。原因を追求してたのですが、力尽きました。

19 messages 2004/08/18
[#24127] Re: ruby/tk crashes on bcc32 — Hidetoshi NAGAI <nagai@...> 2004/08/19

永井@知能.九工大です.

[#24131] Re: ruby/tk crashes on bcc32 — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/08/19

山本です。

[#24135] Re: ruby/tk crashes on bcc32 — "H.Yamamoto" <ocean@...2.ccsnet.ne.jp> 2004/08/19

山本です。試行錯誤の結果、これで落ちなくなりました。

[ruby-dev:24027] Re: String#each -> String#each_char

From: "Akinori MUSHA" <knu@...>
Date: 2004-08-06 04:30:37 UTC
List: ruby-dev #24027
At Fri, 6 Aug 2004 05:57:18 +0900,
aamine wrote:
> * String#to_a がいつまで使えるか信用ならない。
> 
>   String#each は文字単位なのが「自然」だと言うなら、#to_a
>   は文字配列を返すのが「自然」だろうと予想せざるを得ない。
>   従って String#to_a は信用できない。

 to_a は Enumerable のメソッドなので each とは連動しますよね。
(そういう意味でなかったら失礼)

> また具体的な補強案としては以下を提案します。
> 
> (1) 文字列 → 行配列 強化策
> 
> * 文字列を行配列にするメソッド String#lines を新設する (名前はHaskellから)

 これは僕も考えました。

 今の Ruby では、 String#[] はバイト単位、 String#each は行単位、
引数なしの String#split はホワイトスペース区切りの語単位、のように
利便性におもねった構成になっています。それが手軽かつ便利だという
信念がある(あった)のだと思いますが、メソッドに明確な名前を付けても
Enumerator のようなものを利用する際に便利さも損なわれない、という
のが理想ですよね。

> * Enumerator を組み込みにする

 これは僕も当初から「組み込みでないとうれしさが半減する」と主張
しているので賛成です。

> * to_enum を短くする。例えば #by とか

 それは利用側からの視点ですが、実装側で工夫する手もあります。
これは一つのアイデアであって提案というわけではないのですが、
たとえば、「each_* メソッドは、ブロックなしで呼ばれた場合に
Enumerable なオブジェクトを返すように実装する」という解もあり
得ます。すると、利用側は

	ObjectSpace.each_object.select { |obj| ... }

のように書けるようになるわけです。

 Enumerable なオブジェクトを簡単に生成できる API を(C レベル
および Ruby レベルで)用意して支援してやれば、実装も容易になる
でしょう。

 ほかにも案があればいろいろ聞きたいです。

-- 
                     /
                    /__  __            Akinori.org / MUSHA.org
                   / )  )  ) )  /     FreeBSD.org / Ruby-lang.org
Akinori MUSHA aka / (_ /  ( (__(  @ iDaemons.org / and.or.jp

"It seems to me as we make our own few circles 'round the sun
          We get it backwards and our seven years go by like one"

In This Thread