Functional Core, Imperative Shell
- As the name suggest the core domain logic of the software should be functional. It must rely on immutable values and pure functions.
- The shell can be programmed in an imperative style. It will take care of all the side effects like making and responding to network requests.
- The shell can call the core but not the other way around.