非決定性とエラーを含む計算を ExceptT e [] モナドで扱おうとしてちょっとハマった。

これのMonadPlusインスタンスはExceptTによるorElse的な振る舞いで、下層のリストモナドの非決定性ではないという問題。

ある意味では非決定性とエラーの両者をMonadPlusというひとつの型クラスで扱っていることの問題とも言え、そういえば昔Haskell-cafeで「MonadPlusとMonadOrElseを分ける」という話があったと思い出した。

https://www.haskell.org/pipermail/haskell-cafe/2008-May/042644.html