![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
- a not totally trivial example implemented using JPA and Scala
- an event sourced implementation using explicit state changes
- a straightforward translation of the mutable event sourced implementation into an immutable implementation
- encoding domain knowledge into the type system to make the domain easier to understand and reduce the number of runtime error checks
- Towards an immutable domain model – monads (part 5) the stuff above translated into monads (where it should be)