John a De Goes thoughts on what the architecture of modern functional programs should look like.
Article consists of a newly-minted, tricked-out recommendation for architecting modern functional programs, along with new ways of thinking about the structure of this architecture.
It mentions how Onion Architecture can be implemented in object-oriented programming or in functional programming. And continues with 2 choices for functional programming - Monad Transformers Library(MTL), or something equivalent to it (the final approach, though note that the type classes from MTL can be subverted to build Free structures); or Free monads, or something equivalent to them (the initial approach).
A simple example in the onion architecture using Free monads and the Free Transformers approach to abstracting over functor operations is included. The onion architecture has proven an enormously useful tool for structuring large-scale functional programs in a composable and modular way.
[Read More]