なんかこれ、Scala側の Stream の bug な気がしてきた。 https://t.co/6ZSTAkQuV7 Iterator だと問題なさそうだし。
2014-04-16 14:56:24@lyrical_logical @gakuzzzz Scaladoc書いてあるので、addStringで?がくっつくのは一応仕様っぽいですね https://t.co/OC0eWhUwjB リスコフの置換原則的に(?)どうなのか、という問題はありそうですけど
2014-04-16 15:06:33@xuwei_k @lyrical_logical おーコメントに書いてありますね。ってことは意図してそういう挙動なんですね。そういうものなのか……
2014-04-16 15:09:41@gakuzzzz ただ、一番上の親のscaladoc見たときに https://t.co/XhXPQGi7Y3 そんな風にoverrideしていいのか?とか何も書いてなくて"Appends all elements of this "とかだけ書いてあるのは、かなり詐欺な気がする
2014-04-16 15:13:41@gakuzzzz @xuwei_k もう Scala とか忘れたんですが Iterator って有限じゃないといけないみたいな制限ありましたっけ(C++ にはある)それなら妥当な結果だと思います。そうでないなら Iterator の結果おかしい…
2014-04-16 15:19:42@gakuzzzz @xuwei_k https://t.co/uafVdY6B8g と https://t.co/61czd1j4gU の違いによって出た差の話ですよね。これはLSP破ってるので、詐欺って言うより設計ミスなのではないかという気が…
2014-04-16 15:20:05@gakuzzzz @xuwei_k 本来なら、TraversableOnceの方でもう少し緩い制限にしておくべきだったのではない感が。
2014-04-16 15:21:26@kmizu @gakuzzzz @xuwei_k それだと Iterator#addString ちょっとまずいですよねえ。ドキュメントの内容に反してるような
2014-04-16 15:25:57まぁScala標準ライブラリが悪いのだけど、それとは別というか微妙に関係ある話として、IteratorをtoSeqするとStreamになるというの、変にハマることがほとんどで嬉しいことのほうが少ないので、必ずtoListかtoVectorなどを使え!というのもっと広まって欲しい
2014-04-16 15:26:56@lyrical_logical @kmizu @gakuzzzz 誰かドキュメント修正して pull req しましょう!
2014-04-16 15:27:53Stream#addString(StringBuilder,String) がLSP破ってる、というのは、大本の http://t.co/X47XnjEV78 のドキュメントから判断したものですね。 #scalajp
2014-04-16 16:44:09TraversableOnce#addString(StringBuidler, String)とStream#addString(StringBuidler, String)を比較したときに、後者の返り値の文字列の方が「制約が緩い」でこれはLSPに反しているという話。
2014-04-16 16:51:03