Functional Core, Imperative Shell
アプリケーションを作るときのアーキテクチャの話
恐らくこの辺が出典
アプリケーション全体で見れば、
その集合としてアプリケーションが成り立っていると見た方がイメージしやすい
アプリケーションのコア部分を関数型っぽく書き、その側部分は命令的に書くみたいなことを言っている
関数型とか命令的とか言うのは、キャッチーな単語の選択に過ぎないと思う

「コア部分で関数型プログラミングをしろ」という主張ではない
重要なのは、コア部分は副作用のない型のかっちりした感じで実装し、
副作用部分はもっと外側で書く
Haskellのような言語で、このアーキテクチャを見ると、副作用がどこにあるのか明確にわかりやすい
実際、コア部分には IO
などは一切登場しないように実装される
コード例がイマイチな気がするが、説明はまとまってる
リンク集