前からこんなissueありますが
What to do about lawless classes?
たとえば以下のような感じで、LengthとIndexとEachはFoldableがあれば実装できます*1
https://github.com/xuwei-k/scalaz/commit/249c3ed58fe17b7d6525ebc98fabaa6cf2748830
- その実装が正しいか?
- そうなっているべきか?
- こういう継承関係でないほうがいい場合があるか?
などは置いておくとして。(これ考えても答えが出ないというか、考えようがない気がする)
(ちゃんと確かめてないですが)大抵の場合は、現在のEachやIndexやLengthの実装は、このFoldableから導出した実装と同じ動作になる気がします(速度は遅いとしても)
あと、Eachは特に副作用前提なので、lawなんて作れるわけない感じありますね。
*1:Functorでもできるかも