mtlのExceptTを使うべき。EitherTでもtransformersのExceptTでもなく。
EitherのMonadTrans相当のものを使いたいときに、何を使うべきか毎回忘れてしまうので、メモしておきます。
下記の理由により現在は、eitherのEitherTまたはtransformersのExceptTではなく、mtlのExceptTを使うべきです。
- eitherのEitherTはDeprecated
- transformersのExceptTは
MonadExcept e m | m -> s相当のものがないのでGenralizedNewtypeDerivingすると効力を無くす(deriving MonadExcept Eできない) - mtlのExceptTには
MonadError e m | m -> eがある

