generated at
Three Haskell Cake
HaskellでApplication Architectureを作るときのパターン
ReaderTパターンや、mtlなどのデザパタを取り入れている


理解不足で理解を保留した箇所もいくつかあるのでまた再読しようmrsekut


Layer1
orchestration layer
Effectをinjdectionする層
この層はtestするのが難しいので薄く作る
Env AppM 型を定義する
AppM Application Monadになる
命令形プログラミング的
Layer2
capabilityを定義する
外部アービスと依存関係をモックアウトする
DDDのRepository層のようなイメージかなmrsekut
mtl styleの型クラスを定義する
できるだけ小さく保つ
OOP的
Layer3
純粋なビジネスロジックを書く
IOやEffectのような純粋でないものは何も含まない
関数型プログラミング的


AppMを、Layer2で定義される型クラスの、instanceにする部分はどこに含まれる?
Layer1かLayer2
それほど拘りがあるわけではないが、気持ち決めておきたい
たぶんLayer1


このアーキテクチャで実装された例


関連



参考
本家
purescript-halogen-realworldの解説記事
Haskell Cakeを元にわかりやすく5つのLayerに分けている
「5つのLayerに分けている」と聞くとちょっとギョッとするけどHaskell Cakeとほぼ同じ話
具体例があるので、どこに何を書けばよいのかわかりやすくなっていると思う