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がある

筆者プロフィール

my-latest-logo

aiya000(あいや)

せつラボ 〜圏論の基本〜」 「せつラボ2~雲と天使と関手圏~」 「矢澤にこ先輩といっしょに代数!」を書いています!

強い静的型付けとテストを用いて、バグを防ぐのが好き。Haskell・TypeScript。