MonadOr

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つに定まるのか

*1:同じシグネチャの型のメソッドになるのだが