Domain modeling is usually implemented using OO design. In this approach of "nouns-first" we design object hierarchies using subtyping to model the various elements of the domain. In this talk we will take a different approach using Scala:
- Start with focus on verbs first.
- Think how we can model domain behaviors using pure functions grouped within extensible modules.
- Use an algebraic approach towards evolution of modules,the algebra being composed of functions,types and laws.
- See how the domain algebra can be constructed from categorical structures like monoids, functors and monads
- Discuss how the functional patterns lead to compositionality - an extremely important quality that scales your domain model.