https://github.com/scalaz/scalaz/pull/407
自分: OnePlusという最近入ったデータ構造のtypeclassのインスタンスを追加したpull reqをする
↓
これ「Left Distributionを満たす場合でないと、成り立たないのでは?成り立たない例探してみるけど」といわれる(その他implicitぶつかるとか数点指摘される)
↓
Haskellコードがでてくる(おぉ・・・
↓
実は一般的なMonadPlusって、満たすべき性質で*1MonadPlusとMonadOrという2つに分けて考えることができるらしい
http://www.haskell.org/haskellwiki/MonadPlus_reform_proposal
↓
なるほど、面白い・・・。
が、英語力的にもMonadPlusのlawやMonadOrの知識的にもついていけてないので、自分が送ったpull reqなのに議論を傍観してる(イマココ
どうなるんだろう、これきっかけにわざわざMonadOrをScalazに追加も微妙だろうし・・・。
- 結局OnePlusをMonadやApplicativeなどにする正しいやり方はあるのか
- そのためには、MonadOrとMoandPlusを区別しないと無理なのか
- 正しいやり方があってもそれは1つに定まるのか