ekmett/semigroupoids のバグ?

68 visningar
Hoppa till det första olästa meddelandet

Kenji Yoshida

oläst,
8 juni 2013 12:58:302013-06-08
till haske...@googlegroups.com
こんにちは

表題の件ですが、バグかな?と思うのですが、少し自信がないのでpull reqやissue立てる前にここに投稿してみました。


ekmett/semigroupoidsには、この前投稿した
ように、Comonadと関連するExtendというclassがありますが


これの、Data.Sequenceのインスタンスの定義についてです。

まずListの場合は
duplicated = init . tails
となっています。

たとえば
duplicated [1,2,3]
だと、結果は
[[1,2,3],[2,3],[3]]
ですよね。


一方 Data.Sequence のほうは単に
duplicated = Seq.tails
となっていて、
duplicated (Data.Sequence.fromList [1,2,3])
を呼ぶと、
fromList [fromList [1,2,3],fromList [2,3],fromList [3],fromList []]
となり、最後に空のSeqが入るはずです。



まずこの定義の違いに気づいて、この定義の違いがあえて意図したものではないのなら、
ListかSequenceのインスタンスの定義のどちらかはバグだと思うのです。


そして、おそらくData.Sequenceのほうの定義がバグだと思う理由が以下です。

このコミットのメッセージで
「duplicate [] bugfix」
と言っていて、昔はListのほうも単に
duplicate = tails
だったものを、現在のかたちに本人が修正しています


そして、具体的に例がちょっと出せないのですが、おそらくここに書いてあるExtendのlaw
を、現在のData.SequenceのExtendの

instance Extend Seq where
  duplicated = Seq.tails

という定義では満たさない気がします。


というわけで、なんでもいいので意見をもらえるとありがたいです。

Kenji Yoshida

oläst,
11 juni 2013 06:03:562013-06-11
till haske...@googlegroups.com
自分の予想どおりのbugだったようで、issue報告したら修正されました
Svara alla
Svara författaren
Vidarebefordra
0 nya meddelanden