From: Akinori MUSHA Date: 2009-11-12T21:55:50+09:00 Subject: [ruby-dev:39677] Re: [Bug:trunk] Enumerator.new {|y| y << 1 << 2 << 3 } At Thu, 12 Nov 2009 21:33:23 +0900, Yusuke ENDOH wrote: > > 遠藤です。 > > 2009年11月12日21:17 NARUSE, Yui : > >> 2009年11月12日0:38 Akinori MUSHA : > >>>>> それはそれとして、ドキュメントは必要でしょうねぇ。 > >>>> Enumerator::Yielder と Enumerator::Generator は全部 nodoc だったので、 > >>>> あわせて適当に書いてみました。これもコミットしようと思います。 > >>> Yielder/Generator という組合せによる実装は実験的なもので、特に > >>> 後者は外部に公開する必要がないので敢えて伏せていました。公開仕様に > >>> すると制約になるので、需要が生じるまでは非公開の方がいいのではない > >>> でしょうか。 > >> > >> ああ、やっぱりそういう意図なんですよね。そういうことならドキュメントは > >> コミットしないでおきます。 > > > > experimenal ならばその旨のドキュメントは入れておいた方がいいのではないでしょうか。 > > 「何やら yield メソッドと << メソッドが定義されたオブジェクトが渡される」 > という仕様は fix されているけれど、それが Yielder のインスタンスであると > いうことは (現在の実装がそうなってるだけで) 保証していない、という意味だ > と思います。あってますよね? > knu さん  はい、その通りです。 > そういう場合どこに doc を書くべきかなんですが、[ruby-dev:39672] のように > すればよさそうです。  遠藤さんは匿名クラス化を提案されていますが、 :nodoc: あるいは 「このクラスは実装都合だから依存禁止」と書くのでは甘いですかね。 SEGV等の危険ではなく互換性の仮定を避けるための匿名化というのは、 プログラマを信用しないという点でRuby的ではなく、もし慣習化すると ライブラリを書く上で面倒な制約になってしまうのではないかと危惧 します。 P.S. Redmineが私の投稿を拾ってくれないのはPGP署名のせいかな? 署名なしで送ってみます。 -- Akinori MUSHA / http://akinori.org/