The free monad without the boilerplate

The free monad is really neat for creating DSL as it allows to completely separate the business logic from the implementation. It leaves a great freedom for the implementation choices and should you change your implementation you just need to rewrite your interpreter without changing any of the business logic. That’s great! However after playing […]