IT練習ノート

IT関連で調べたこと(実際は嵌ったこと)を書いています。

extensibleの小さなサンプルを書いてみた

モナドのスタックの取り回しが面倒に感じているので、そろそろ何とかしたいと思っていました。ここでようやく重い腰を上げて、extensibleにチャレンジです。ウェブ上にある情報は、複雑だったので、もっと小さなサンプルを書き下してみました。

mtlcompatibleの意味は、MonadReaderMonadStateクラスを使って実装した場合を意味しています。Readerモナドを直接使っている場合は、コードの修正が必要です。

extensibleの場合は、書き方が2通りあると思いますが(あってる?)、型クラス制約を使ったAssoicate+TypeApplicationのパターンがベターと思いました。

小さなサンプルだと、extensibleの場合記述量が多くなり、まったくメリットは感じられませんが、規模が大きくなるとメリットが上回ると思います。

小さなサンプルが書けて、心理的障壁はなくなったので、今後は使っていくと思います。

extensible_sample.hs