generated at
Functional Core, Imperative Shell
アプリケーションを作るときのアーキテクチャの話


恐らくこの辺が出典




アプリケーション全体で見れば、
ドメインごとにFunctional Core, Imperative Shellがあって、
その集合としてアプリケーションが成り立っていると見た方がイメージしやすい



アプリケーションのコア部分を関数型っぽく書き、その側部分は命令的に書くみたいなことを言っている
関数型とか命令的とか言うのは、キャッチーな単語の選択に過ぎないと思うmrsekut
「コア部分で関数型プログラミングをしろ」という主張ではない
重要なのは、コア部分は副作用のない型のかっちりした感じで実装し、
副作用部分はもっと外側で書く


個人的にはThree Haskell Cake辺りがわかりやすかった
Haskellのような言語で、このアーキテクチャを見ると、副作用がどこにあるのか明確にわかりやすい
実際、コア部分には IO などは一切登場しないように実装される
The Clean ArchitectureのようなLayered Architectureの多くはこれに則っていると思う





コード例がイマイチな気がするが、説明はまとまってる
リンク集