質問: オブジェクト指向は、それ自体はそこまで難しくない概念ですが、それを実際のアプリケーションに落としこもうとする際には考慮するべきことが多く、なので、 GoF に代表されるような、オブジェクト指向におけるデザインパターンが編み出されてきました。 Haskell で、プログラムの中心的な役割を果たすのはモナド(do 記法の syntax sugar がある、潰せる構造)ですが、それを実際のアプリケーションに落としていこうとすると、少し飛躍があるような気がします。 ### 質問 Haskell プログラミングにおいて、オブジェクト指向におけるデザインパターンのようなものはありますでしょうか。もう少し具体的にいうと、様々なモナドがある中で、それらをどのように組み合わせて実際のアプリケーションを構築していくべきかについてのまとまった考え方、のようなものはありますか?
回答: よく知られたものとして、ReaderT Design Patternというのを挙げておきます。 実際にはReaderT以外の使い方についても言及しているし。 ざっくり言うと、 * アプリケーション全体としては`ReaderT IO`を使え * その他の`IO`が絡まない、純粋な関数では適宜`StateT`や`WriterT`を使え といった内容です。