haskell-ja > Archives > 2015/06/20

2015/06/20 21:56:10 UTCshiro
#
積んどいたLearn You a Haskell for Great Goodを今更だけど面白く読んでます。説明がFunctor, Applicative, Monoid, Monadの順になってるのがわかりやすいなあと。ところでData.Foldableが出てきたところでふと疑問なんですが、
#
PreludeのfoldlやfoldrがData.Foldableのfoldlやfoldrと一緒になってないのってどうしてでしょう。歴史的に前者の定義が最初からあったのだとしても、後者の方が一般的だから置き換えちゃってもいいんじゃないかなと思ったんですが、何か困ったことが起きるんでしょうか。
2015/06/20 22:17:13 UTCshiro
#
Preludeをあんまりいろんなものに依存させたくないとか、fold系は結構性能に響くので実は[]に特化してある方が速いのだとかの可能性は考えたんですが、他に何かあるのかな。
2015/06/20 22:35:13 UTCnotogawa
#
さんこうです https://wiki.haskell.org/Foldable_Traversable_In_Prelude
2015/06/20 22:45:25 UTCshiro
#
そのものずばりでした。理屈の上では問題ないはずだけど影響範囲がでかいから慎重にやってますって感じなんですかね。型が一般化されたために従来のコードに型指定追加しないと型が決められなくなる、っていうのは可能性としてはあるのかな。
2015/06/20 23:03:11 UTCkazu
#
Prelude から Foldable の foldr が export されることになって、リストに使うときに辞書渡しのコストがかかるようになった気がするんですが、どうなんでしょうね。